Screensaver: Convert Screensaver to a BDirectWindow
This allows OpenGL screensavers to be able to show a preview.
This commit is contained in:
@@ -18,8 +18,7 @@ Preference ScreenSaver :
|
|||||||
ScreenSaver.cpp
|
ScreenSaver.cpp
|
||||||
# needed for some old/broken screen saver add-ons that do not
|
# needed for some old/broken screen saver add-ons that do not
|
||||||
# link against libscreensaver.so
|
# link against libscreensaver.so
|
||||||
|
: be game libscreensaver.so localestub tracker $(TARGET_LIBSTDC++)
|
||||||
: tracker libscreensaver.so be $(TARGET_LIBSTDC++) localestub
|
|
||||||
: ScreenSaver.rdef
|
: ScreenSaver.rdef
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -143,11 +143,12 @@ public:
|
|||||||
|
|
||||||
void SaveState();
|
void SaveState();
|
||||||
|
|
||||||
|
BScreenSaver* ScreenSaver();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static int _CompareScreenSaverItems(const void* left,
|
static int _CompareScreenSaverItems(const void* left,
|
||||||
const void* right);
|
const void* right);
|
||||||
|
|
||||||
BScreenSaver* _ScreenSaver();
|
|
||||||
void _CloseSaver();
|
void _CloseSaver();
|
||||||
void _OpenSaver();
|
void _OpenSaver();
|
||||||
|
|
||||||
@@ -662,7 +663,7 @@ ModulesView::MessageReceived(BMessage* message)
|
|||||||
void
|
void
|
||||||
ModulesView::SaveState()
|
ModulesView::SaveState()
|
||||||
{
|
{
|
||||||
BScreenSaver* saver = _ScreenSaver();
|
BScreenSaver* saver = ScreenSaver();
|
||||||
if (saver == NULL)
|
if (saver == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -746,7 +747,7 @@ ModulesView::_CompareScreenSaverItems(const void* left, const void* right)
|
|||||||
|
|
||||||
|
|
||||||
BScreenSaver*
|
BScreenSaver*
|
||||||
ModulesView::_ScreenSaver()
|
ModulesView::ScreenSaver()
|
||||||
{
|
{
|
||||||
if (fSaverRunner != NULL)
|
if (fSaverRunner != NULL)
|
||||||
return fSaverRunner->ScreenSaver();
|
return fSaverRunner->ScreenSaver();
|
||||||
@@ -760,7 +761,7 @@ ModulesView::_CloseSaver()
|
|||||||
{
|
{
|
||||||
// remove old screen saver preview & config
|
// remove old screen saver preview & config
|
||||||
|
|
||||||
BScreenSaver* saver = _ScreenSaver();
|
BScreenSaver* saver = ScreenSaver();
|
||||||
BView* view = fPreviewView->RemovePreview();
|
BView* view = fPreviewView->RemovePreview();
|
||||||
if (fSettingsView != NULL)
|
if (fSettingsView != NULL)
|
||||||
fSettingsBox->RemoveChild(fSettingsView);
|
fSettingsBox->RemoveChild(fSettingsView);
|
||||||
@@ -802,7 +803,7 @@ ModulesView::_OpenSaver()
|
|||||||
fSettingsView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
fSettingsView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
fSettingsBox->AddChild(fSettingsView);
|
fSettingsBox->AddChild(fSettingsView);
|
||||||
|
|
||||||
BScreenSaver* saver = _ScreenSaver();
|
BScreenSaver* saver = ScreenSaver();
|
||||||
if (saver != NULL && fSettingsView != NULL) {
|
if (saver != NULL && fSettingsView != NULL) {
|
||||||
saver->StartConfig(fSettingsView);
|
saver->StartConfig(fSettingsView);
|
||||||
if (saver->StartSaver(view, false) == B_OK)
|
if (saver->StartSaver(view, false) == B_OK)
|
||||||
@@ -827,8 +828,9 @@ ModulesView::_OpenSaver()
|
|||||||
|
|
||||||
ScreenSaverWindow::ScreenSaverWindow()
|
ScreenSaverWindow::ScreenSaverWindow()
|
||||||
:
|
:
|
||||||
BWindow(BRect(50, 50, 496, 375), B_TRANSLATE_SYSTEM_NAME("ScreenSaver"),
|
BDirectWindow(BRect(50, 50, 496, 375),
|
||||||
B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS)
|
B_TRANSLATE_SYSTEM_NAME("ScreenSaver"), B_TITLED_WINDOW,
|
||||||
|
B_ASYNCHRONOUS_CONTROLS | B_AUTO_UPDATE_SIZE_LIMITS)
|
||||||
{
|
{
|
||||||
fSettings.Load();
|
fSettings.Load();
|
||||||
|
|
||||||
@@ -897,6 +899,15 @@ ScreenSaverWindow::~ScreenSaverWindow()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
ScreenSaverWindow::DirectConnected(direct_buffer_info* info)
|
||||||
|
{
|
||||||
|
BScreenSaver* saver = fModulesView->ScreenSaver();
|
||||||
|
if (saver != NULL)
|
||||||
|
saver->DirectConnected(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ScreenSaverWindow::MessageReceived(BMessage* message)
|
ScreenSaverWindow::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
@@ -912,7 +923,7 @@ ScreenSaverWindow::MessageReceived(BMessage* message)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
BWindow::MessageReceived(message);
|
BDirectWindow::MessageReceived(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
#define SCREEN_SAVER_WINDOW_H
|
#define SCREEN_SAVER_WINDOW_H
|
||||||
|
|
||||||
|
|
||||||
#include <Window.h>
|
#include <DirectWindow.h>
|
||||||
|
|
||||||
#include "PasswordWindow.h"
|
#include "PasswordWindow.h"
|
||||||
#include "ScreenSaverSettings.h"
|
#include "ScreenSaverSettings.h"
|
||||||
@@ -26,11 +26,13 @@ class FadeView;
|
|||||||
class ModulesView;
|
class ModulesView;
|
||||||
|
|
||||||
|
|
||||||
class ScreenSaverWindow : public BWindow {
|
class ScreenSaverWindow : public BDirectWindow {
|
||||||
public:
|
public:
|
||||||
ScreenSaverWindow();
|
ScreenSaverWindow();
|
||||||
virtual ~ScreenSaverWindow();
|
virtual ~ScreenSaverWindow();
|
||||||
|
|
||||||
|
virtual void DirectConnected(direct_buffer_info* info);
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage* message);
|
virtual void MessageReceived(BMessage* message);
|
||||||
virtual void ScreenChanged(BRect frame, color_space space);
|
virtual void ScreenChanged(BRect frame, color_space space);
|
||||||
virtual bool QuitRequested();
|
virtual bool QuitRequested();
|
||||||
|
|||||||
Reference in New Issue
Block a user