[haiku-commits] haiku: hrev48481 - src/bin/screen_blanker src/preferences/screensaver headers/private/screen_saver

  • From: pulkomandy@xxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 10 Dec 2014 21:24:50 +0100 (CET)

hrev48481 adds 1 changeset to branch 'master'
old head: 75fe62cd00c0a15c0cfc4eb9fc220547007ca683
new head: e4e2ce4ce38546193ddab428b32a654447a07e19
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=e4e2ce4+%5E75fe62c

----------------------------------------------------------------------------

e4e2ce4: When testing screensaver, don't have mouse move exit the screen saver.
  
  Fixes #7463
  
  Signed-off-by: Adrien Destugues <pulkomandy@xxxxxxxxx>

                                      [ Puck Meerburg <puck@xxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev48481
Commit:      e4e2ce4ce38546193ddab428b32a654447a07e19
URL:         http://cgit.haiku-os.org/haiku/commit/?id=e4e2ce4
Author:      Puck Meerburg <puck@xxxxxxxxxxxxx>
Date:        Tue Dec  9 22:43:01 2014 UTC
Committer:   Adrien Destugues <pulkomandy@xxxxxxxxx>
Commit-Date: Wed Dec 10 20:18:30 2014 UTC

Ticket:      https://dev.haiku-os.org/ticket/7463

----------------------------------------------------------------------------

6 files changed, 52 insertions(+), 23 deletions(-)
headers/private/screen_saver/ScreenSaverShared.h | 13 +++++++++
src/bin/screen_blanker/ScreenBlanker.cpp         | 11 ++++++--
src/bin/screen_blanker/ScreenBlanker.h           |  4 ++-
src/bin/screen_blanker/ScreenSaverWindow.cpp     | 29 +++++++++++---------
src/bin/screen_blanker/ScreenSaverWindow.h       |  9 ++++--
.../screensaver/ScreenSaverWindow.cpp            |  9 +++---

----------------------------------------------------------------------------

diff --git a/headers/private/screen_saver/ScreenSaverShared.h 
b/headers/private/screen_saver/ScreenSaverShared.h
new file mode 100644
index 0000000..98a86c5
--- /dev/null
+++ b/headers/private/screen_saver/ScreenSaverShared.h
@@ -0,0 +1,13 @@
+/*
+ * Copyright 2014 Haiku, Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ *
+ * Authors:
+ *             Puck Meerburg, puck@xxxxxxxxxxxxx
+ */
+#ifndef SCREEN_SAVER_SHARED_H
+#define SCREEN_SAVER_SHARED_H
+
+const uint32 kMsgTestSaver = 'TEST';
+
+#endif // SCREEN_SAVER_SHARED_H
diff --git a/src/bin/screen_blanker/ScreenBlanker.cpp 
b/src/bin/screen_blanker/ScreenBlanker.cpp
index 83fdc6a..87d387a 100644
--- a/src/bin/screen_blanker/ScreenBlanker.cpp
+++ b/src/bin/screen_blanker/ScreenBlanker.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright 2003-2013 Haiku, Inc. All rights reserved.
+ * Copyright 2003-2014 Haiku, Inc. All rights reserved.
  * Distributed under the terms of the MIT License.
  *
  * Authors:
@@ -8,6 +8,7 @@
  *             Ryan Leavengood, leavengood@xxxxxxxxx
  *             Michael Phipps
  *             John Scipione, jscipione@xxxxxxxxx
+ *             Puck Meerburg, puck@xxxxxxxxxxxxx
  */
 
 
@@ -27,6 +28,7 @@
 #include <string.h>
 #include <syslog.h>
 
+#include "ScreenSaverShared.h"
 
 const static uint32 kMsgTurnOffScreen = 'tofs';
 const static uint32 kMsgSuspendScreen = 'suss';
@@ -42,6 +44,7 @@ ScreenBlanker::ScreenBlanker()
        fWindow(NULL),
        fSaverRunner(NULL),
        fPasswordWindow(NULL),
+       fTestSaver(false),
        fResumeRunner(NULL),
        fStandByScreenRunner(NULL),
        fSuspendScreenRunner(NULL),
@@ -67,7 +70,7 @@ ScreenBlanker::ReadyToRun()
        // create a BDirectWindow and start the render thread.
        // TODO: we need a window per screen...
        BScreen screen(B_MAIN_SCREEN_ID);
-       fWindow = new ScreenSaverWindow(screen.Frame());
+       fWindow = new ScreenSaverWindow(screen.Frame(), fTestSaver);
        fPasswordWindow = new PasswordWindow();
 
        BView* view = fWindow->ChildAt(0);
@@ -265,6 +268,10 @@ ScreenBlanker::MessageReceived(BMessage* message)
                        _SetDPMSMode(B_DPMS_STAND_BY);
                        break;
 
+               case kMsgTestSaver:
+                       fTestSaver = true;
+                       break;
+
                default:
                        BApplication::MessageReceived(message);
        }
diff --git a/src/bin/screen_blanker/ScreenBlanker.h 
b/src/bin/screen_blanker/ScreenBlanker.h
index b190e73..6cb29d9 100644
--- a/src/bin/screen_blanker/ScreenBlanker.h
+++ b/src/bin/screen_blanker/ScreenBlanker.h
@@ -1,11 +1,12 @@
 /*
- * Copyright 2003-2013 Haiku, Inc. All rights reserved.
+ * Copyright 2003-2014 Haiku, Inc. All rights reserved.
  * Distributed under the terms of the MIT License.
  *
  * Authors:
  *             Jérôme Duval, jerome.duval@xxxxxxx
  *             Michael Phipps
  *             John Scipione, jscipione@xxxxxxxxx
+ *             Puck Meerburg, puck@xxxxxxxxxxxxx
  */
 #ifndef SCREEN_SAVER_APP_H
 #define SCREEN_SAVER_APP_H
@@ -50,6 +51,7 @@ private:
                        PasswordWindow*         fPasswordWindow;
 
                        bigtime_t                       fBlankTime;
+                       bool                            fTestSaver;
                        BMessageRunner*         fResumeRunner;
 
                        BMessageRunner*         fStandByScreenRunner;
diff --git a/src/bin/screen_blanker/ScreenSaverWindow.cpp 
b/src/bin/screen_blanker/ScreenSaverWindow.cpp
index 27ec307..c10e2e9 100644
--- a/src/bin/screen_blanker/ScreenSaverWindow.cpp
+++ b/src/bin/screen_blanker/ScreenSaverWindow.cpp
@@ -1,11 +1,12 @@
 /*
- * Copyright 2003-2009, Haiku.
+ * Copyright 2003-2014, Haiku.
  * Distributed under the terms of the MIT License.
  *
  * Authors:
  *             Michael Phipps
  *             Jérôme Duval, jerome.duval@xxxxxxx
  *             Ryan Leavengood, leavengood@xxxxxxxxx
+ *             Puck Meerburg, puck@xxxxxxxxxxxxx
  */
 
 
@@ -30,22 +31,24 @@ ScreenSaverFilter::Filter(BMessage* message, BHandler** 
target)
        // This guard is used to avoid sending multiple B_QUIT_REQUESTED 
messages
        if (fEnabled) {
                switch (message->what) {
-                       case B_KEY_DOWN:
+                       case B_MOUSE_MOVED:
                        {
-                               // we ignore the Print-Screen key to make 
screen shots of
-                               // screen savers possible
-                               int32 key;
-                               if (message->FindInt32("key", &key) == B_OK && 
key == 0xe)
+                               // ignore the initial B_MOUSE_MOVED sent by the 
app_server
+                               // in test mode, all mouse move events are 
ignored
+                               bool transitOnly = false;
+                               if (fTestMode
+                                       || message->FindBool("be:transit_only", 
&transitOnly) == B_OK
+                                       && transitOnly)
                                        return B_DISPATCH_MESSAGE;
 
                                // Fall through
                        }
-                       case B_MOUSE_MOVED:
+                       case B_KEY_DOWN:
                        {
-                               // ignore the initial B_MOUSE_MOVED sent by the 
app_server
-                               bool transitOnly = false;
-                               if (message->FindBool("be:transit_only", 
&transitOnly) == B_OK
-                                       && transitOnly)
+                               // we ignore the Print-Screen key to make 
screen shots of
+                               // screen savers possible
+                               int32 key;
+                               if (message->FindInt32("key", &key) == B_OK && 
key == 0xe)
                                        return B_DISPATCH_MESSAGE;
 
                                // Fall through
@@ -80,7 +83,7 @@ ScreenSaverFilter::Filter(BMessage* message, BHandler** 
target)
        This is the BDirectWindow subclass that rendering occurs in.
        A view is added to it so that BView based screensavers will work.
 */
-ScreenSaverWindow::ScreenSaverWindow(BRect frame)
+ScreenSaverWindow::ScreenSaverWindow(BRect frame, bool test)
        :
        BDirectWindow(frame, "ScreenSaver Window",
                B_NO_BORDER_WINDOW_LOOK, kWindowScreenFeel,
@@ -95,7 +98,7 @@ ScreenSaverWindow::ScreenSaverWindow(BRect frame)
                B_WILL_DRAW);
        fTopView->SetViewColor(B_TRANSPARENT_COLOR);
 
-       fFilter = new ScreenSaverFilter();
+       fFilter = new ScreenSaverFilter(test);
        fTopView->AddFilter(fFilter);
 
        AddChild(fTopView);
diff --git a/src/bin/screen_blanker/ScreenSaverWindow.h 
b/src/bin/screen_blanker/ScreenSaverWindow.h
index 0151a9e..7ad6dda 100644
--- a/src/bin/screen_blanker/ScreenSaverWindow.h
+++ b/src/bin/screen_blanker/ScreenSaverWindow.h
@@ -1,5 +1,6 @@
 /*
  * Copyright 2003, Michael Phipps. All rights reserved.
+ * Copyright 2014, Puck Meerburg.
  * Distributed under the terms of the MIT License.
  */
 #ifndef SCREEN_SAVER_WINDOW_H
@@ -19,10 +20,11 @@ const static uint32 kMsgEnableFilter = 'eflt';
 
 class ScreenSaverFilter : public BMessageFilter {
 public:
-                                                               
ScreenSaverFilter()
+                                                               
ScreenSaverFilter(bool test)
                                                                :
                                                                
BMessageFilter(B_ANY_DELIVERY, B_ANY_SOURCE),
-                                                                       
fEnabled(true) {}
+                                                                       
fEnabled(true),
+                                                                       
fTestMode(test) {}
 
        virtual filter_result           Filter(BMessage* message, BHandler** 
target);
 
@@ -31,12 +33,13 @@ public:
 
 private:
                        bool                            fEnabled;
+                       bool                            fTestMode;
 };
 
 
 class ScreenSaverWindow : public BDirectWindow {
 public:
-                                                               
ScreenSaverWindow(BRect frame);
+                                                               
ScreenSaverWindow(BRect frame, bool test);
                                                                
~ScreenSaverWindow();
 
        virtual void                            MessageReceived(BMessage* 
message);
diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp 
b/src/preferences/screensaver/ScreenSaverWindow.cpp
index 96eef35..5dfa4dd 100644
--- a/src/preferences/screensaver/ScreenSaverWindow.cpp
+++ b/src/preferences/screensaver/ScreenSaverWindow.cpp
@@ -7,6 +7,7 @@
  *             Jérôme Duval, jerome.duval@xxxxxxx
  *             Michael Phipps
  *             John Scipione, jscipione@xxxxxxxxx
+ *             Puck Meerburg, puck@xxxxxxxxxxxxx
  */
 
 
@@ -53,7 +54,7 @@
 #include "PreviewView.h"
 #include "ScreenCornerSelector.h"
 #include "ScreenSaverItem.h"
-
+#include "ScreenSaverShared.h"
 
 #undef B_TRANSLATION_CONTEXT
 #define B_TRANSLATION_CONTEXT "ScreenSaver"
@@ -64,7 +65,6 @@ const uint32 kMinSettingsWidth = 230;
 const uint32 kMinSettingsHeight = 120;
 
 const int32 kMsgSaverSelected = 'SSEL';
-const int32 kMsgTestSaver = 'TEST';
 const int32 kMsgPasswordCheckBox = 'PWCB';
 const int32 kMsgRunSliderChanged = 'RSch';
 const int32 kMsgRunSliderUpdate = 'RSup';
@@ -639,7 +639,8 @@ ModulesView::MessageReceived(BMessage* message)
 
                        be_roster->StartWatching(BMessenger(this, Looper()),
                                B_REQUEST_QUIT);
-                       if (be_roster->Launch(SCREEN_BLANKER_SIG, 
&fSettings.Message(),
+                       BMessage message(kMsgTestSaver);
+                       if (be_roster->Launch(SCREEN_BLANKER_SIG, &message,
                                        &fScreenSaverTestTeam) == B_OK) {
                                break;
                        }
@@ -656,7 +657,7 @@ ModulesView::MessageReceived(BMessage* message)
                        BEntry entry(path.Path());
                        entry_ref ref;
                        if (entry.GetRef(&ref) == B_OK) {
-                               be_roster->Launch(&ref, &fSettings.Message(),
+                               be_roster->Launch(&ref, &message,
                                        &fScreenSaverTestTeam);
                        }
                        break;


Other related posts:

  • » [haiku-commits] haiku: hrev48481 - src/bin/screen_blanker src/preferences/screensaver headers/private/screen_saver - pulkomandy