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);
fView = new BView(frame,"ScreenSaver View",B_FOLLOW_ALL,B_WILL_DRAW);
fView->SetViewColor(0,0,0);
AddChild(fView);
}
+11 -8
View File
@@ -33,6 +33,7 @@ int main(int, char**)
ScreenSaverApp::ScreenSaverApp()
: BApplication(SCREEN_BLANKER_SIG),
fWin(NULL),
fThreadID(-1),
fRunner(NULL)
{
fBlankTime = system_time();
@@ -52,15 +53,15 @@ ScreenSaverApp::ReadyToRun()
fThrd = new ScreenSaverThread(fWin ,fWin->fView, &fPref);
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");
exit(1);
}
fWin->SetSaver(fSaver);
fWin->SetFullScreen(true);
fWin->Show();
fThreadID = spawn_thread(ScreenSaverThread::ThreadFunc,"ScreenSaverRenderer", B_LOW_PRIORITY,fThrd);
resume_thread(fThreadID);
HideCursor();
}
}
@@ -70,7 +71,8 @@ void
ScreenSaverApp::ShowPW()
{
fWin->Lock();
suspend_thread(fThreadID);
if (fThreadID > -1)
suspend_thread(fThreadID);
if (B_OK==fWin->SetFullScreen(false)) {
fWin->Sync();
ShowCursor();
@@ -114,7 +116,8 @@ ScreenSaverApp::MessageReceived(BMessage *message)
HideCursor();
fPww->Hide();
}
resume_thread(fThreadID);
if (fThreadID > -1)
resume_thread(fThreadID);
fWin->Unlock();
default:
BApplication::MessageReceived(message);
@@ -140,7 +143,7 @@ ScreenSaverApp::Shutdown(void)
{
if (fWin)
fWin->Hide();
if (fThreadID)
if (fThreadID > -1)
kill_thread(fThreadID);
if (fThrd)
delete fThrd;