[haiku-commits] r37120 - haiku/trunk/src/add-ons/input_server/filters/screen_saver

  • From: korli@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 12 Jun 2010 19:47:47 +0200 (CEST)

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;
+       }
 }
 
 


Other related posts: