Author: korli Date: 2010-06-12 19:47:47 +0200 (Sat, 12 Jun 2010) New Revision: 37120 Changeset: http://dev.haiku-os.org/changeset/37120/haiku Modified: haiku/trunk/src/add-ons/input_server/filters/screen_saver/ScreenSaverFilter.cpp Log: * fixes a warning * try to launch screen_blanker by path when a launch by signature fails. Modified: haiku/trunk/src/add-ons/input_server/filters/screen_saver/ScreenSaverFilter.cpp =================================================================== --- haiku/trunk/src/add-ons/input_server/filters/screen_saver/ScreenSaverFilter.cpp 2010-06-12 17:34:47 UTC (rev 37119) +++ haiku/trunk/src/add-ons/input_server/filters/screen_saver/ScreenSaverFilter.cpp 2010-06-12 17:47:47 UTC (rev 37120) @@ -14,6 +14,7 @@ #include <Application.h> #include <Autolock.h> +#include <FindDirectory.h> #include <MessageRunner.h> #include <NodeMonitor.h> #include <OS.h> @@ -172,7 +173,7 @@ void ScreenSaverFilter::_Invoke() { - if (fCurrentCorner == fNeverBlankCorner && fNeverBlankCorner != NO_CORNER + if ((fCurrentCorner == fNeverBlankCorner && fNeverBlankCorner != NO_CORNER) || (fSettings.TimeFlags() & ENABLE_SAVER) == 0 || fIsRunning || be_roster->IsRunning(SCREEN_BLANKER_SIG)) @@ -183,6 +184,21 @@ // the blanker twice in any case. fIsRunning = true; } + + // 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) == B_OK) { + fIsRunning = true; + } }