Blackness screensaver is a special case we handle now (now rendering thread ...)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13988 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2005-08-19 14:21:49 +00:00
parent 0a1f6e8966
commit b27c5e9861
2 changed files with 12 additions and 8 deletions
+1
View File
@@ -14,6 +14,7 @@ SSAwindow::SSAwindow(BRect frame)
{ {
frame.OffsetTo(0,0); frame.OffsetTo(0,0);
fView = new BView(frame,"ScreenSaver View",B_FOLLOW_ALL,B_WILL_DRAW); fView = new BView(frame,"ScreenSaver View",B_FOLLOW_ALL,B_WILL_DRAW);
fView->SetViewColor(0,0,0);
AddChild(fView); AddChild(fView);
} }
+11 -8
View File
@@ -33,6 +33,7 @@ int main(int, char**)
ScreenSaverApp::ScreenSaverApp() ScreenSaverApp::ScreenSaverApp()
: BApplication(SCREEN_BLANKER_SIG), : BApplication(SCREEN_BLANKER_SIG),
fWin(NULL), fWin(NULL),
fThreadID(-1),
fRunner(NULL) fRunner(NULL)
{ {
fBlankTime = system_time(); fBlankTime = system_time();
@@ -52,15 +53,15 @@ ScreenSaverApp::ReadyToRun()
fThrd = new ScreenSaverThread(fWin ,fWin->fView, &fPref); fThrd = new ScreenSaverThread(fWin ,fWin->fView, &fPref);
fSaver = fThrd->LoadAddOn(); fSaver = fThrd->LoadAddOn();
if (!fSaver) { if (fSaver) {
fWin->SetSaver(fSaver);
fThreadID = spawn_thread(ScreenSaverThread::ThreadFunc,"ScreenSaverRenderer", B_LOW_PRIORITY,fThrd);
resume_thread(fThreadID);
} else {
fprintf(stderr, "could not load the screensaver addon\n"); fprintf(stderr, "could not load the screensaver addon\n");
exit(1);
} }
fWin->SetSaver(fSaver);
fWin->SetFullScreen(true); fWin->SetFullScreen(true);
fWin->Show(); fWin->Show();
fThreadID = spawn_thread(ScreenSaverThread::ThreadFunc,"ScreenSaverRenderer", B_LOW_PRIORITY,fThrd);
resume_thread(fThreadID);
HideCursor(); HideCursor();
} }
} }
@@ -70,7 +71,8 @@ void
ScreenSaverApp::ShowPW() ScreenSaverApp::ShowPW()
{ {
fWin->Lock(); fWin->Lock();
suspend_thread(fThreadID); if (fThreadID > -1)
suspend_thread(fThreadID);
if (B_OK==fWin->SetFullScreen(false)) { if (B_OK==fWin->SetFullScreen(false)) {
fWin->Sync(); fWin->Sync();
ShowCursor(); ShowCursor();
@@ -114,7 +116,8 @@ ScreenSaverApp::MessageReceived(BMessage *message)
HideCursor(); HideCursor();
fPww->Hide(); fPww->Hide();
} }
resume_thread(fThreadID); if (fThreadID > -1)
resume_thread(fThreadID);
fWin->Unlock(); fWin->Unlock();
default: default:
BApplication::MessageReceived(message); BApplication::MessageReceived(message);
@@ -140,7 +143,7 @@ ScreenSaverApp::Shutdown(void)
{ {
if (fWin) if (fWin)
fWin->Hide(); fWin->Hide();
if (fThreadID) if (fThreadID > -1)
kill_thread(fThreadID); kill_thread(fThreadID);
if (fThrd) if (fThrd)
delete fThrd; delete fThrd;