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