When testing screensaver, don't have mouse move exit the screen saver.
Fixes #7463 Signed-off-by: Adrien Destugues <[email protected]>
This commit is contained in:
committed by
Adrien Destugues
parent
75fe62cd00
commit
e4e2ce4ce3
@@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014 Haiku, Inc. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Puck Meerburg, [email protected]
|
||||||
|
*/
|
||||||
|
#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.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
* Ryan Leavengood, [email protected]
|
* Ryan Leavengood, [email protected]
|
||||||
* Michael Phipps
|
* Michael Phipps
|
||||||
* John Scipione, [email protected]
|
* John Scipione, [email protected]
|
||||||
|
* Puck Meerburg, [email protected]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
|
|
||||||
|
#include "ScreenSaverShared.h"
|
||||||
|
|
||||||
const static uint32 kMsgTurnOffScreen = 'tofs';
|
const static uint32 kMsgTurnOffScreen = 'tofs';
|
||||||
const static uint32 kMsgSuspendScreen = 'suss';
|
const static uint32 kMsgSuspendScreen = 'suss';
|
||||||
@@ -42,6 +44,7 @@ ScreenBlanker::ScreenBlanker()
|
|||||||
fWindow(NULL),
|
fWindow(NULL),
|
||||||
fSaverRunner(NULL),
|
fSaverRunner(NULL),
|
||||||
fPasswordWindow(NULL),
|
fPasswordWindow(NULL),
|
||||||
|
fTestSaver(false),
|
||||||
fResumeRunner(NULL),
|
fResumeRunner(NULL),
|
||||||
fStandByScreenRunner(NULL),
|
fStandByScreenRunner(NULL),
|
||||||
fSuspendScreenRunner(NULL),
|
fSuspendScreenRunner(NULL),
|
||||||
@@ -67,7 +70,7 @@ ScreenBlanker::ReadyToRun()
|
|||||||
// create a BDirectWindow and start the render thread.
|
// create a BDirectWindow and start the render thread.
|
||||||
// TODO: we need a window per screen...
|
// TODO: we need a window per screen...
|
||||||
BScreen screen(B_MAIN_SCREEN_ID);
|
BScreen screen(B_MAIN_SCREEN_ID);
|
||||||
fWindow = new ScreenSaverWindow(screen.Frame());
|
fWindow = new ScreenSaverWindow(screen.Frame(), fTestSaver);
|
||||||
fPasswordWindow = new PasswordWindow();
|
fPasswordWindow = new PasswordWindow();
|
||||||
|
|
||||||
BView* view = fWindow->ChildAt(0);
|
BView* view = fWindow->ChildAt(0);
|
||||||
@@ -265,6 +268,10 @@ ScreenBlanker::MessageReceived(BMessage* message)
|
|||||||
_SetDPMSMode(B_DPMS_STAND_BY);
|
_SetDPMSMode(B_DPMS_STAND_BY);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case kMsgTestSaver:
|
||||||
|
fTestSaver = true;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BApplication::MessageReceived(message);
|
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.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Jérôme Duval, jerome.duval@free.fr
|
* Jérôme Duval, jerome.duval@free.fr
|
||||||
* Michael Phipps
|
* Michael Phipps
|
||||||
* John Scipione, jscipione@gmail.com
|
* John Scipione, jscipione@gmail.com
|
||||||
|
* Puck Meerburg, puck@puckipedia.nl
|
||||||
*/
|
*/
|
||||||
#ifndef SCREEN_SAVER_APP_H
|
#ifndef SCREEN_SAVER_APP_H
|
||||||
#define SCREEN_SAVER_APP_H
|
#define SCREEN_SAVER_APP_H
|
||||||
@@ -50,6 +51,7 @@ private:
|
|||||||
PasswordWindow* fPasswordWindow;
|
PasswordWindow* fPasswordWindow;
|
||||||
|
|
||||||
bigtime_t fBlankTime;
|
bigtime_t fBlankTime;
|
||||||
|
bool fTestSaver;
|
||||||
BMessageRunner* fResumeRunner;
|
BMessageRunner* fResumeRunner;
|
||||||
|
|
||||||
BMessageRunner* fStandByScreenRunner;
|
BMessageRunner* fStandByScreenRunner;
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2003-2009, Haiku.
|
* Copyright 2003-2014, Haiku.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Michael Phipps
|
* Michael Phipps
|
||||||
* Jérôme Duval, jerome.duval@free.fr
|
* Jérôme Duval, jerome.duval@free.fr
|
||||||
* Ryan Leavengood, leavengood@gmail.com
|
* 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
|
// This guard is used to avoid sending multiple B_QUIT_REQUESTED messages
|
||||||
if (fEnabled) {
|
if (fEnabled) {
|
||||||
switch (message->what) {
|
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:
|
case B_KEY_DOWN:
|
||||||
{
|
{
|
||||||
// we ignore the Print-Screen key to make screen shots of
|
// we ignore the Print-Screen key to make screen shots of
|
||||||
@@ -40,16 +53,6 @@ ScreenSaverFilter::Filter(BMessage* message, BHandler** target)
|
|||||||
|
|
||||||
// Fall through
|
// 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_MODIFIERS_CHANGED:
|
||||||
case B_UNMAPPED_KEY_DOWN:
|
case B_UNMAPPED_KEY_DOWN:
|
||||||
case B_MOUSE_DOWN:
|
case B_MOUSE_DOWN:
|
||||||
@@ -80,7 +83,7 @@ ScreenSaverFilter::Filter(BMessage* message, BHandler** target)
|
|||||||
This is the BDirectWindow subclass that rendering occurs in.
|
This is the BDirectWindow subclass that rendering occurs in.
|
||||||
A view is added to it so that BView based screensavers will work.
|
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",
|
BDirectWindow(frame, "ScreenSaver Window",
|
||||||
B_NO_BORDER_WINDOW_LOOK, kWindowScreenFeel,
|
B_NO_BORDER_WINDOW_LOOK, kWindowScreenFeel,
|
||||||
@@ -95,7 +98,7 @@ ScreenSaverWindow::ScreenSaverWindow(BRect frame)
|
|||||||
B_WILL_DRAW);
|
B_WILL_DRAW);
|
||||||
fTopView->SetViewColor(B_TRANSPARENT_COLOR);
|
fTopView->SetViewColor(B_TRANSPARENT_COLOR);
|
||||||
|
|
||||||
fFilter = new ScreenSaverFilter();
|
fFilter = new ScreenSaverFilter(test);
|
||||||
fTopView->AddFilter(fFilter);
|
fTopView->AddFilter(fFilter);
|
||||||
|
|
||||||
AddChild(fTopView);
|
AddChild(fTopView);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2003, Michael Phipps. All rights reserved.
|
* Copyright 2003, Michael Phipps. All rights reserved.
|
||||||
|
* Copyright 2014, Puck Meerburg.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
#ifndef SCREEN_SAVER_WINDOW_H
|
#ifndef SCREEN_SAVER_WINDOW_H
|
||||||
@@ -19,10 +20,11 @@ const static uint32 kMsgEnableFilter = 'eflt';
|
|||||||
|
|
||||||
class ScreenSaverFilter : public BMessageFilter {
|
class ScreenSaverFilter : public BMessageFilter {
|
||||||
public:
|
public:
|
||||||
ScreenSaverFilter()
|
ScreenSaverFilter(bool test)
|
||||||
:
|
:
|
||||||
BMessageFilter(B_ANY_DELIVERY, B_ANY_SOURCE),
|
BMessageFilter(B_ANY_DELIVERY, B_ANY_SOURCE),
|
||||||
fEnabled(true) {}
|
fEnabled(true),
|
||||||
|
fTestMode(test) {}
|
||||||
|
|
||||||
virtual filter_result Filter(BMessage* message, BHandler** target);
|
virtual filter_result Filter(BMessage* message, BHandler** target);
|
||||||
|
|
||||||
@@ -31,12 +33,13 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool fEnabled;
|
bool fEnabled;
|
||||||
|
bool fTestMode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class ScreenSaverWindow : public BDirectWindow {
|
class ScreenSaverWindow : public BDirectWindow {
|
||||||
public:
|
public:
|
||||||
ScreenSaverWindow(BRect frame);
|
ScreenSaverWindow(BRect frame, bool test);
|
||||||
~ScreenSaverWindow();
|
~ScreenSaverWindow();
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage* message);
|
virtual void MessageReceived(BMessage* message);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
* Jérôme Duval, jerome.duval@free.fr
|
* Jérôme Duval, jerome.duval@free.fr
|
||||||
* Michael Phipps
|
* Michael Phipps
|
||||||
* John Scipione, jscipione@gmail.com
|
* John Scipione, jscipione@gmail.com
|
||||||
|
* Puck Meerburg, puck@puckipedia.nl
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -53,7 +54,7 @@
|
|||||||
#include "PreviewView.h"
|
#include "PreviewView.h"
|
||||||
#include "ScreenCornerSelector.h"
|
#include "ScreenCornerSelector.h"
|
||||||
#include "ScreenSaverItem.h"
|
#include "ScreenSaverItem.h"
|
||||||
|
#include "ScreenSaverShared.h"
|
||||||
|
|
||||||
#undef B_TRANSLATION_CONTEXT
|
#undef B_TRANSLATION_CONTEXT
|
||||||
#define B_TRANSLATION_CONTEXT "ScreenSaver"
|
#define B_TRANSLATION_CONTEXT "ScreenSaver"
|
||||||
@@ -64,7 +65,6 @@ const uint32 kMinSettingsWidth = 230;
|
|||||||
const uint32 kMinSettingsHeight = 120;
|
const uint32 kMinSettingsHeight = 120;
|
||||||
|
|
||||||
const int32 kMsgSaverSelected = 'SSEL';
|
const int32 kMsgSaverSelected = 'SSEL';
|
||||||
const int32 kMsgTestSaver = 'TEST';
|
|
||||||
const int32 kMsgPasswordCheckBox = 'PWCB';
|
const int32 kMsgPasswordCheckBox = 'PWCB';
|
||||||
const int32 kMsgRunSliderChanged = 'RSch';
|
const int32 kMsgRunSliderChanged = 'RSch';
|
||||||
const int32 kMsgRunSliderUpdate = 'RSup';
|
const int32 kMsgRunSliderUpdate = 'RSup';
|
||||||
@@ -639,7 +639,8 @@ ModulesView::MessageReceived(BMessage* message)
|
|||||||
|
|
||||||
be_roster->StartWatching(BMessenger(this, Looper()),
|
be_roster->StartWatching(BMessenger(this, Looper()),
|
||||||
B_REQUEST_QUIT);
|
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) {
|
&fScreenSaverTestTeam) == B_OK) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -656,7 +657,7 @@ ModulesView::MessageReceived(BMessage* message)
|
|||||||
BEntry entry(path.Path());
|
BEntry entry(path.Path());
|
||||||
entry_ref ref;
|
entry_ref ref;
|
||||||
if (entry.GetRef(&ref) == B_OK) {
|
if (entry.GetRef(&ref) == B_OK) {
|
||||||
be_roster->Launch(&ref, &fSettings.Message(),
|
be_roster->Launch(&ref, &message,
|
||||||
&fScreenSaverTestTeam);
|
&fScreenSaverTestTeam);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user