From 4973feeaa00ca4825be5d0cc18e22076bb84142f Mon Sep 17 00:00:00 2001 From: Philippe Saint-Pierre Date: Mon, 17 Aug 2009 02:10:43 +0000 Subject: [PATCH] When testing a screensaver.. 1. Stop the preview 2. Start it again after the test is done This prevents the case where the screen is filled with a color during the first frame of the screensaver. When you return to the preview (after the Test), that first frame is long gone and the preview is then invalid. Reference : DebugNow screen saver. Ticket #4252 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32450 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../screensaver/ScreenSaverWindow.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp b/src/preferences/screensaver/ScreenSaverWindow.cpp index b9be5a0053..e0bafee759 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.cpp +++ b/src/preferences/screensaver/ScreenSaverWindow.cpp @@ -113,6 +113,8 @@ class ModulesView : public BView { BView* fSettingsView; PreviewView* fPreviewView; + + team_id fScreenSaverTestTeamId; }; static const int32 kTimeInUnits[] = { @@ -362,13 +364,27 @@ ModulesView::MessageReceived(BMessage* message) SaveState(); fSettings.Save(); - be_roster->Launch(SCREEN_BLANKER_SIG, &fSettings.Message()); + _CloseSaver(); + + be_roster->StartWatching(BMessenger(this, this->Looper()), B_REQUEST_QUIT); + be_roster->Launch(SCREEN_BLANKER_SIG, &fSettings.Message(), &fScreenSaverTestTeamId); break; case kMsgAddSaver: fFilePanel->Show(); break; + case B_SOME_APP_QUIT: { + team_id team; + if (message->FindInt32("be:team", &team) == B_OK) { + if (team == fScreenSaverTestTeamId) { + be_roster->StopWatching(this); + _OpenSaver(); + } + } + } + break; + default: BView::MessageReceived(message); }