Cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14245 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
4097611c9f
commit
3b7087718c
|
@ -4,8 +4,10 @@
|
||||||
*
|
*
|
||||||
* Authors:
|
* Authors:
|
||||||
* Michael Phipps
|
* Michael Phipps
|
||||||
* Jérôme Duval, jerome.duval@free.fr
|
* Jérôme Duval, jerome.duval@free.fr
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <NodeMonitor.h>
|
#include <NodeMonitor.h>
|
||||||
#include <OS.h>
|
#include <OS.h>
|
||||||
#include <Roster.h>
|
#include <Roster.h>
|
||||||
|
@ -16,13 +18,22 @@
|
||||||
#include <Debug.h>
|
#include <Debug.h>
|
||||||
#define CALLED() SERIAL_PRINT(("%s\n", __PRETTY_FUNCTION__))
|
#define CALLED() SERIAL_PRINT(("%s\n", __PRETTY_FUNCTION__))
|
||||||
|
|
||||||
|
|
||||||
extern "C" _EXPORT BInputServerFilter* instantiate_input_filter();
|
extern "C" _EXPORT BInputServerFilter* instantiate_input_filter();
|
||||||
|
|
||||||
BInputServerFilter* instantiate_input_filter() { // required C func to build the IS Filter
|
|
||||||
return (new SSInputFilter());
|
/** required C func to build the IS Filter */
|
||||||
|
|
||||||
|
BInputServerFilter*
|
||||||
|
instantiate_input_filter()
|
||||||
|
{
|
||||||
|
return new SSInputFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
SSController::SSController(SSInputFilter *filter)
|
SSController::SSController(SSInputFilter *filter)
|
||||||
: BLooper("screensaver controller", B_LOW_PRIORITY),
|
: BLooper("screensaver controller", B_LOW_PRIORITY),
|
||||||
fFilter(filter)
|
fFilter(filter)
|
||||||
|
@ -47,8 +58,8 @@ SSController::MessageReceived(BMessage *msg)
|
||||||
case B_SOME_APP_QUIT:
|
case B_SOME_APP_QUIT:
|
||||||
{
|
{
|
||||||
const char *signature;
|
const char *signature;
|
||||||
if (msg->FindString("be:signature", &signature)==B_OK
|
if (msg->FindString("be:signature", &signature) == B_OK
|
||||||
&& strcasecmp(signature, SCREEN_BLANKER_SIG)==0) {
|
&& strcasecmp(signature, SCREEN_BLANKER_SIG) == 0) {
|
||||||
fFilter->SetEnabled(msg->what == B_SOME_APP_LAUNCHED);
|
fFilter->SetEnabled(msg->what == B_SOME_APP_LAUNCHED);
|
||||||
}
|
}
|
||||||
SERIAL_PRINT(("mime_sig %s\n", signature));
|
SERIAL_PRINT(("mime_sig %s\n", signature));
|
||||||
|
@ -60,6 +71,9 @@ SSController::MessageReceived(BMessage *msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// #pragma mark -
|
||||||
|
|
||||||
|
|
||||||
SSInputFilter::SSInputFilter()
|
SSInputFilter::SSInputFilter()
|
||||||
: fLastEventTime(0),
|
: fLastEventTime(0),
|
||||||
fBlankTime(0),
|
fBlankTime(0),
|
||||||
|
@ -70,7 +84,8 @@ SSInputFilter::SSInputFilter()
|
||||||
fFrameNum(0),
|
fFrameNum(0),
|
||||||
fRunner(NULL),
|
fRunner(NULL),
|
||||||
fWatchingDirectory(false),
|
fWatchingDirectory(false),
|
||||||
fWatchingFile(false) {
|
fWatchingFile(false)
|
||||||
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
fSSController = new SSController(this);
|
fSSController = new SSController(this);
|
||||||
fSSController->Run();
|
fSSController->Run();
|
||||||
|
@ -80,19 +95,23 @@ SSInputFilter::SSInputFilter()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SSInputFilter::~SSInputFilter() {
|
SSInputFilter::~SSInputFilter()
|
||||||
|
{
|
||||||
delete fRunner;
|
delete fRunner;
|
||||||
|
|
||||||
if (fWatchingFile)
|
if (fWatchingFile)
|
||||||
watch_node(&fPrefNodeRef, B_STOP_WATCHING, NULL);
|
watch_node(&fPrefNodeRef, B_STOP_WATCHING, NULL);
|
||||||
if (fWatchingDirectory)
|
if (fWatchingDirectory)
|
||||||
watch_node(&fPrefDirNodeRef, B_STOP_WATCHING, NULL);
|
watch_node(&fPrefDirNodeRef, B_STOP_WATCHING, NULL);
|
||||||
|
|
||||||
be_roster->StopWatching(fSSController);
|
be_roster->StopWatching(fSSController);
|
||||||
delete fSSController;
|
delete fSSController;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SSInputFilter::WatchPreferences() {
|
SSInputFilter::WatchPreferences()
|
||||||
|
{
|
||||||
BEntry entry(fPref.GetPath().Path());
|
BEntry entry(fPref.GetPath().Path());
|
||||||
if (entry.Exists()) {
|
if (entry.Exists()) {
|
||||||
if (fWatchingFile)
|
if (fWatchingFile)
|
||||||
|
@ -117,7 +136,6 @@ SSInputFilter::WatchPreferences() {
|
||||||
watch_node(&fPrefDirNodeRef, B_WATCH_ALL, NULL, fSSController);
|
watch_node(&fPrefDirNodeRef, B_WATCH_ALL, NULL, fSSController);
|
||||||
fWatchingDirectory = true;
|
fWatchingDirectory = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -125,8 +143,14 @@ void
|
||||||
SSInputFilter::Invoke()
|
SSInputFilter::Invoke()
|
||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
if ((fKeep!=NONE && fCurrent == fKeep) || fEnabled || fPref.TimeFlags()!=1 || be_roster->IsRunning(SCREEN_BLANKER_SIG))
|
if ((fKeep != NONE && fCurrent == fKeep)
|
||||||
return; // If mouse is in this corner, never invoke.
|
|| fEnabled
|
||||||
|
|| fPref.TimeFlags() != 1
|
||||||
|
|| be_roster->IsRunning(SCREEN_BLANKER_SIG)) {
|
||||||
|
// If mouse is in this corner, never invoke.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
SERIAL_PRINT(("we run screenblanker\n"));
|
SERIAL_PRINT(("we run screenblanker\n"));
|
||||||
be_roster->Launch(SCREEN_BLANKER_SIG);
|
be_roster->Launch(SCREEN_BLANKER_SIG);
|
||||||
}
|
}
|
||||||
|
@ -139,15 +163,19 @@ SSInputFilter::ReloadSettings()
|
||||||
if (!fPref.LoadSettings()) {
|
if (!fPref.LoadSettings()) {
|
||||||
SERIAL_PRINT(("preferences loading failed: going to defaults\n"));
|
SERIAL_PRINT(("preferences loading failed: going to defaults\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
fBlank = fPref.GetBlankCorner();
|
fBlank = fPref.GetBlankCorner();
|
||||||
fKeep = fPref.GetNeverBlankCorner();
|
fKeep = fPref.GetNeverBlankCorner();
|
||||||
fBlankTime = fSnoozeTime = fPref.BlankTime();
|
fBlankTime = fSnoozeTime = fPref.BlankTime();
|
||||||
CheckTime();
|
CheckTime();
|
||||||
|
|
||||||
delete fRunner;
|
delete fRunner;
|
||||||
fRunner = new BMessageRunner(BMessenger(NULL, fSSController), new BMessage(SS_CHECK_TIME), fSnoozeTime, -1);
|
fRunner = new BMessageRunner(BMessenger(NULL, fSSController),
|
||||||
|
new BMessage(SS_CHECK_TIME), fSnoozeTime, -1);
|
||||||
if (fRunner->InitCheck() != B_OK) {
|
if (fRunner->InitCheck() != B_OK) {
|
||||||
SERIAL_PRINT(("fRunner init failed\n"));
|
SERIAL_PRINT(("fRunner init failed\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
WatchPreferences();
|
WatchPreferences();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,21 +186,28 @@ SSInputFilter::Banish()
|
||||||
CALLED();
|
CALLED();
|
||||||
if (!fEnabled)
|
if (!fEnabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SERIAL_PRINT(("we quit screenblanker\n"));
|
SERIAL_PRINT(("we quit screenblanker\n"));
|
||||||
BMessenger ssApp(SCREEN_BLANKER_SIG,-1,NULL); // Don't care if it fails
|
|
||||||
ssApp.SendMessage(B_QUIT_REQUESTED);
|
// Don't care if it fails
|
||||||
|
BMessenger blankerMessenger(SCREEN_BLANKER_SIG, -1, NULL);
|
||||||
|
blankerMessenger.SendMessage(B_QUIT_REQUESTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SSInputFilter::CheckTime() {
|
SSInputFilter::CheckTime()
|
||||||
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
fRtc = system_time();
|
fRtc = system_time();
|
||||||
if (fRtc >= fLastEventTime + fBlankTime)
|
if (fRtc >= fLastEventTime + fBlankTime)
|
||||||
Invoke();
|
Invoke();
|
||||||
// If the screen saver is on OR it was time to come on but it didn't (corner), snooze for blankTime
|
|
||||||
// Otherwise, there was an event in the middle of the last snooze, so snooze for the remainder
|
// If the screen saver is on OR it was time to come on but it didn't (corner),
|
||||||
if (fEnabled || (fLastEventTime+fBlankTime<=fRtc))
|
// snooze for blankTime.
|
||||||
|
// Otherwise, there was an event in the middle of the last snooze, so snooze
|
||||||
|
// for the remainder.
|
||||||
|
if (fEnabled || fLastEventTime + fBlankTime <= fRtc)
|
||||||
fSnoozeTime = fBlankTime;
|
fSnoozeTime = fBlankTime;
|
||||||
else
|
else
|
||||||
fSnoozeTime = fLastEventTime + fBlankTime - fRtc;
|
fSnoozeTime = fLastEventTime + fBlankTime - fRtc;
|
||||||
|
@ -180,18 +215,26 @@ SSInputFilter::CheckTime() {
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SSInputFilter::UpdateRectangles() {
|
SSInputFilter::UpdateRectangles()
|
||||||
|
{
|
||||||
|
// TODO: make this better if possible at all (in a clean way)
|
||||||
CALLED();
|
CALLED();
|
||||||
BRect frame = BScreen().Frame();
|
BRect frame = BScreen().Frame();
|
||||||
fTopLeft.Set(frame.left,frame.top,frame.left+CORNER_SIZE,frame.top+CORNER_SIZE);
|
|
||||||
fTopRight.Set(frame.right-CORNER_SIZE,frame.top,frame.right,frame.top+CORNER_SIZE);
|
fTopLeft.Set(frame.left, frame.top,
|
||||||
fBottomLeft.Set(frame.left,frame.bottom-CORNER_SIZE,frame.left+CORNER_SIZE,frame.bottom);
|
frame.left + CORNER_SIZE, frame.top + CORNER_SIZE);
|
||||||
fBottomRight.Set(frame.right-CORNER_SIZE,frame.bottom-CORNER_SIZE,frame.right,frame.bottom);
|
fTopRight.Set(frame.right - CORNER_SIZE, frame.top,
|
||||||
|
frame.right, frame.top + CORNER_SIZE);
|
||||||
|
fBottomLeft.Set(frame.left, frame.bottom - CORNER_SIZE,
|
||||||
|
frame.left + CORNER_SIZE, frame.bottom);
|
||||||
|
fBottomRight.Set(frame.right - CORNER_SIZE, frame.bottom - CORNER_SIZE,
|
||||||
|
frame.right, frame.bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SSInputFilter::Cornered(arrowDirection pos) {
|
SSInputFilter::Cornered(arrowDirection pos)
|
||||||
|
{
|
||||||
//CALLED();
|
//CALLED();
|
||||||
fCurrent = pos;
|
fCurrent = pos;
|
||||||
if (fBlank != NONE && pos == fBlank)
|
if (fBlank != NONE && pos == fBlank)
|
||||||
|
@ -200,13 +243,16 @@ SSInputFilter::Cornered(arrowDirection pos) {
|
||||||
|
|
||||||
|
|
||||||
filter_result
|
filter_result
|
||||||
SSInputFilter::Filter(BMessage *msg,BList *outList) {
|
SSInputFilter::Filter(BMessage *msg, BList *outList)
|
||||||
|
{
|
||||||
fLastEventTime = system_time();
|
fLastEventTime = system_time();
|
||||||
if (msg->what==B_MOUSE_MOVED) {
|
|
||||||
|
if (msg->what == B_MOUSE_MOVED) {
|
||||||
BPoint pos;
|
BPoint pos;
|
||||||
msg->FindPoint("where",&pos);
|
msg->FindPoint("where",&pos);
|
||||||
if ((fFrameNum++ % 32)==0) // Every so many frames, update
|
if ((fFrameNum++ % 32) == 0) // Every so many frames, update
|
||||||
UpdateRectangles();
|
UpdateRectangles();
|
||||||
|
|
||||||
if (fTopLeft.Contains(pos))
|
if (fTopLeft.Contains(pos))
|
||||||
Cornered(UPLEFT);
|
Cornered(UPLEFT);
|
||||||
else if (fTopRight.Contains(pos))
|
else if (fTopRight.Contains(pos))
|
||||||
|
|
Loading…
Reference in New Issue