When testing screensaver, don't have mouse move exit the screen saver.
Fixes #7463 Signed-off-by: Adrien Destugues <pulkomandy@gmail.com>
This commit is contained in:
parent
75fe62cd00
commit
e4e2ce4ce3
13
headers/private/screen_saver/ScreenSaverShared.h
Normal file
13
headers/private/screen_saver/ScreenSaverShared.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* Copyright 2014 Haiku, Inc. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Puck Meerburg, puck@puckipedia.nl
|
||||
*/
|
||||
#ifndef SCREEN_SAVER_SHARED_H
|
||||
#define SCREEN_SAVER_SHARED_H
|
||||
|
||||
const uint32 kMsgTestSaver = 'TEST';
|
||||
|
||||
#endif // SCREEN_SAVER_SHARED_H
|
@ -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@gmail.com
|
||||
* Michael Phipps
|
||||
* John Scipione, jscipione@gmail.com
|
||||
* Puck Meerburg, puck@puckipedia.nl
|
||||
*/
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
@ -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@free.fr
|
||||
* Michael Phipps
|
||||
* John Scipione, jscipione@gmail.com
|
||||
* Puck Meerburg, puck@puckipedia.nl
|
||||
*/
|
||||
#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;
|
||||
|
@ -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@free.fr
|
||||
* Ryan Leavengood, leavengood@gmail.com
|
||||
* Puck Meerburg, puck@puckipedia.nl
|
||||
*/
|
||||
|
||||
|
||||
@ -30,6 +31,18 @@ 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_MOUSE_MOVED:
|
||||
{
|
||||
// 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_KEY_DOWN:
|
||||
{
|
||||
// we ignore the Print-Screen key to make screen shots of
|
||||
@ -40,16 +53,6 @@ ScreenSaverFilter::Filter(BMessage* message, BHandler** target)
|
||||
|
||||
// Fall through
|
||||
}
|
||||
case B_MOUSE_MOVED:
|
||||
{
|
||||
// ignore the initial B_MOUSE_MOVED sent by the app_server
|
||||
bool transitOnly = false;
|
||||
if (message->FindBool("be:transit_only", &transitOnly) == B_OK
|
||||
&& transitOnly)
|
||||
return B_DISPATCH_MESSAGE;
|
||||
|
||||
// Fall through
|
||||
}
|
||||
case B_MODIFIERS_CHANGED:
|
||||
case B_UNMAPPED_KEY_DOWN:
|
||||
case B_MOUSE_DOWN:
|
||||
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -7,6 +7,7 @@
|
||||
* Jérôme Duval, jerome.duval@free.fr
|
||||
* Michael Phipps
|
||||
* John Scipione, jscipione@gmail.com
|
||||
* Puck Meerburg, puck@puckipedia.nl
|
||||
*/
|
||||
|
||||
|
||||
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user