From ab0e16df04e6e39f49782ad88859e980a685068b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 29 Jun 2010 22:30:42 +0000 Subject: [PATCH] Applied idea from idefix (see bug #5938): try to launch screen_blanker by path when a launch by signature fails. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37305 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../screensaver/ScreenSaverWindow.cpp | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp b/src/preferences/screensaver/ScreenSaverWindow.cpp index 69bb986e3b..06afae4c55 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.cpp +++ b/src/preferences/screensaver/ScreenSaverWindow.cpp @@ -365,6 +365,7 @@ ModulesView::MessageReceived(BMessage* message) } case kMsgTestSaver: + { SaveState(); fSettings.Save(); @@ -372,10 +373,25 @@ ModulesView::MessageReceived(BMessage* message) be_roster->StartWatching(BMessenger(this, this->Looper()), B_REQUEST_QUIT); - be_roster->Launch(SCREEN_BLANKER_SIG, &fSettings.Message(), - &fScreenSaverTestTeamId); + if (be_roster->Launch(SCREEN_BLANKER_SIG, &fSettings.Message(), + &fScreenSaverTestTeamId) == B_OK) + break; + + // Try really hard to launch it. It's very likely that this fails, + // when we run from the CD and there is only an incomplete mime + // database for example... + BPath path; + if (find_directory(B_SYSTEM_BIN_DIRECTORY, &path) != B_OK + || path.Append("screen_blanker") != B_OK) { + path.SetTo("/boot/system/bin/screen_blanker"); + } + BEntry entry(path.Path()); + entry_ref ref; + if (entry.GetRef(&ref) == B_OK) + be_roster->Launch(&ref, &fSettings.Message(), + &fScreenSaverTestTeamId); break; - + } case kMsgAddSaver: fFilePanel->Show(); break;