x11: Wrap platform functions in XWindowsScreenSaver class
This commit is contained in:
parent
be45440e84
commit
ce3e8243a9
|
@ -186,6 +186,15 @@ public:
|
||||||
virtual int XRefreshKeyboardMapping(XMappingEvent* event_map) = 0;
|
virtual int XRefreshKeyboardMapping(XMappingEvent* event_map) = 0;
|
||||||
virtual int XISelectEvents(Display* display, Window w, XIEventMask* masks,
|
virtual int XISelectEvents(Display* display, Window w, XIEventMask* masks,
|
||||||
int num_masks) = 0;
|
int num_masks) = 0;
|
||||||
|
virtual Atom XInternAtom(Display* display, _Xconst char* atom_name,
|
||||||
|
Bool only_if_exists) = 0;
|
||||||
|
virtual int XGetScreenSaver(Display* display, int* timeout_return,
|
||||||
|
int* interval_return, int* prefer_blanking_return,
|
||||||
|
int* allow_exposures_return) = 0;
|
||||||
|
virtual int XSetScreenSaver(Display* display, int timeout, int interval,
|
||||||
|
int prefer_blanking, int allow_exposures) = 0;
|
||||||
|
virtual int XForceScreenSaver(Display* display, int mode) = 0;
|
||||||
|
virtual int XFree(void* data) = 0;
|
||||||
|
virtual Status DPMSEnable(Display* display) = 0;
|
||||||
|
virtual Status DPMSDisable(Display* display) = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -487,3 +487,44 @@ int XWindowsImpl::XISelectEvents(Display* display, Window w, XIEventMask* masks,
|
||||||
return ::XISelectEvents(display, w, masks, num_masks);
|
return ::XISelectEvents(display, w, masks, num_masks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Atom XWindowsImpl::XInternAtom(Display* display, _Xconst char* atom_name,
|
||||||
|
Bool only_if_exists)
|
||||||
|
{
|
||||||
|
return ::XInternAtom(display, atom_name, only_if_exists);
|
||||||
|
}
|
||||||
|
|
||||||
|
int XWindowsImpl::XGetScreenSaver(Display* display, int* timeout_return,
|
||||||
|
int* interval_return,
|
||||||
|
int* prefer_blanking_return,
|
||||||
|
int* allow_exposures_return)
|
||||||
|
{
|
||||||
|
return ::XGetScreenSaver(display, timeout_return, interval_return,
|
||||||
|
prefer_blanking_return, allow_exposures_return);
|
||||||
|
}
|
||||||
|
|
||||||
|
int XWindowsImpl::XSetScreenSaver(Display* display, int timeout, int interval,
|
||||||
|
int prefer_blanking, int allow_exposures)
|
||||||
|
{
|
||||||
|
return ::XSetScreenSaver(display, timeout, interval, prefer_blanking,
|
||||||
|
allow_exposures);
|
||||||
|
}
|
||||||
|
|
||||||
|
int XWindowsImpl::XForceScreenSaver(Display* display, int mode)
|
||||||
|
{
|
||||||
|
return ::XForceScreenSaver(display, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
int XWindowsImpl::XFree(void* data)
|
||||||
|
{
|
||||||
|
return ::XFree(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
Status XWindowsImpl::DPMSEnable(Display* display)
|
||||||
|
{
|
||||||
|
return ::DPMSEnable(display);
|
||||||
|
}
|
||||||
|
|
||||||
|
Status XWindowsImpl::DPMSDisable(Display* display)
|
||||||
|
{
|
||||||
|
return ::DPMSDisable(display);
|
||||||
|
}
|
||||||
|
|
|
@ -148,5 +148,15 @@ public:
|
||||||
virtual int XRefreshKeyboardMapping(XMappingEvent* event_map);
|
virtual int XRefreshKeyboardMapping(XMappingEvent* event_map);
|
||||||
virtual int XISelectEvents(Display* display, Window w, XIEventMask* masks,
|
virtual int XISelectEvents(Display* display, Window w, XIEventMask* masks,
|
||||||
int num_masks);
|
int num_masks);
|
||||||
|
virtual Atom XInternAtom(Display* display, _Xconst char* atom_name,
|
||||||
|
Bool only_if_exists);
|
||||||
|
virtual int XGetScreenSaver(Display* display, int* timeout_return,
|
||||||
|
int* interval_return, int* prefer_blanking_return,
|
||||||
|
int* allow_exposures_return);
|
||||||
|
virtual int XSetScreenSaver(Display* display, int timeout, int interval,
|
||||||
|
int prefer_blanking, int allow_exposures);
|
||||||
|
virtual int XForceScreenSaver(Display* display, int mode);
|
||||||
|
virtual int XFree(void* data);
|
||||||
|
virtual Status DPMSEnable(Display* display);
|
||||||
|
virtual Status DPMSDisable(Display* display);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ XWindowsScreen::XWindowsScreen(
|
||||||
m_root = m_impl->do_DefaultRootWindow(m_display);
|
m_root = m_impl->do_DefaultRootWindow(m_display);
|
||||||
saveShape();
|
saveShape();
|
||||||
m_window = openWindow();
|
m_window = openWindow();
|
||||||
m_screensaver = new XWindowsScreenSaver(m_display,
|
m_screensaver = new XWindowsScreenSaver(m_impl, m_display,
|
||||||
m_window, getEventTarget(), events);
|
m_window, getEventTarget(), events);
|
||||||
m_keyState = new XWindowsKeyState(m_display, m_xkb, events, m_keyMap);
|
m_keyState = new XWindowsKeyState(m_display, m_xkb, events, m_keyMap);
|
||||||
LOG((CLOG_DEBUG "screen shape: %d,%d %dx%d %s", m_x, m_y, m_w, m_h, m_xinerama ? "(xinerama)" : ""));
|
LOG((CLOG_DEBUG "screen shape: %d,%d %dx%d %s", m_x, m_y, m_w, m_h, m_xinerama ? "(xinerama)" : ""));
|
||||||
|
|
|
@ -58,8 +58,9 @@ extern Status DPMSInfo(Display *, CARD16 *, BOOL *);
|
||||||
// XWindowsScreenSaver
|
// XWindowsScreenSaver
|
||||||
//
|
//
|
||||||
|
|
||||||
XWindowsScreenSaver::XWindowsScreenSaver(
|
XWindowsScreenSaver::XWindowsScreenSaver(IXWindowsImpl* impl, Display* display,
|
||||||
Display* display, Window window, void* eventTarget, IEventQueue* events) :
|
Window window, void* eventTarget,
|
||||||
|
IEventQueue* events) :
|
||||||
m_display(display),
|
m_display(display),
|
||||||
m_xscreensaverSink(window),
|
m_xscreensaverSink(window),
|
||||||
m_eventTarget(eventTarget),
|
m_eventTarget(eventTarget),
|
||||||
|
@ -72,22 +73,23 @@ XWindowsScreenSaver::XWindowsScreenSaver(
|
||||||
m_disablePos(0),
|
m_disablePos(0),
|
||||||
m_events(events)
|
m_events(events)
|
||||||
{
|
{
|
||||||
|
m_impl = impl;
|
||||||
// get atoms
|
// get atoms
|
||||||
m_atomScreenSaver = XInternAtom(m_display,
|
m_atomScreenSaver = m_impl->XInternAtom(m_display, "SCREENSAVER", False);
|
||||||
"SCREENSAVER", False);
|
m_atomScreenSaverVersion = m_impl->XInternAtom(m_display,
|
||||||
m_atomScreenSaverVersion = XInternAtom(m_display,
|
"_SCREENSAVER_VERSION",
|
||||||
"_SCREENSAVER_VERSION", False);
|
False);
|
||||||
m_atomScreenSaverActivate = XInternAtom(m_display,
|
m_atomScreenSaverActivate = m_impl->XInternAtom(m_display, "ACTIVATE",
|
||||||
"ACTIVATE", False);
|
False);
|
||||||
m_atomScreenSaverDeactivate = XInternAtom(m_display,
|
m_atomScreenSaverDeactivate = m_impl->XInternAtom(m_display, "DEACTIVATE",
|
||||||
"DEACTIVATE", False);
|
False);
|
||||||
|
|
||||||
// check for DPMS extension. this is an alternative screen saver
|
// check for DPMS extension. this is an alternative screen saver
|
||||||
// that powers down the display.
|
// that powers down the display.
|
||||||
#if HAVE_X11_EXTENSIONS_DPMS_H
|
#if HAVE_X11_EXTENSIONS_DPMS_H
|
||||||
int eventBase, errorBase;
|
int eventBase, errorBase;
|
||||||
if (DPMSQueryExtension(m_display, &eventBase, &errorBase)) {
|
if (m_impl->DPMSQueryExtension(m_display, &eventBase, &errorBase)) {
|
||||||
if (DPMSCapable(m_display)) {
|
if (m_impl->DPMSCapable(m_display)) {
|
||||||
// we have DPMS
|
// we have DPMS
|
||||||
m_dpms = true;
|
m_dpms = true;
|
||||||
}
|
}
|
||||||
|
@ -98,11 +100,12 @@ XWindowsScreenSaver::XWindowsScreenSaver(
|
||||||
bool error = false;
|
bool error = false;
|
||||||
{
|
{
|
||||||
XWindowsUtil::ErrorLock lock(m_display, &error);
|
XWindowsUtil::ErrorLock lock(m_display, &error);
|
||||||
Window root = DefaultRootWindow(m_display);
|
Window root = m_impl->do_DefaultRootWindow(m_display);
|
||||||
XWindowAttributes attr;
|
XWindowAttributes attr;
|
||||||
XGetWindowAttributes(m_display, root, &attr);
|
m_impl->XGetWindowAttributes(m_display, root, &attr);
|
||||||
m_rootEventMask = attr.your_event_mask;
|
m_rootEventMask = attr.your_event_mask;
|
||||||
XSelectInput(m_display, root, m_rootEventMask | SubstructureNotifyMask);
|
m_impl->XSelectInput(m_display, root,
|
||||||
|
m_rootEventMask | SubstructureNotifyMask);
|
||||||
}
|
}
|
||||||
if (error) {
|
if (error) {
|
||||||
LOG((CLOG_DEBUG "didn't set root event mask"));
|
LOG((CLOG_DEBUG "didn't set root event mask"));
|
||||||
|
@ -110,8 +113,8 @@ XWindowsScreenSaver::XWindowsScreenSaver(
|
||||||
}
|
}
|
||||||
|
|
||||||
// get the built-in settings
|
// get the built-in settings
|
||||||
XGetScreenSaver(m_display, &m_timeout, &m_interval,
|
m_impl->XGetScreenSaver(m_display, &m_timeout, &m_interval,
|
||||||
&m_preferBlanking, &m_allowExposures);
|
&m_preferBlanking, &m_allowExposures);
|
||||||
|
|
||||||
// get the DPMS settings
|
// get the DPMS settings
|
||||||
m_dpmsEnabled = isDPMSEnabled();
|
m_dpmsEnabled = isDPMSEnabled();
|
||||||
|
@ -137,11 +140,12 @@ XWindowsScreenSaver::~XWindowsScreenSaver()
|
||||||
|
|
||||||
if (m_display != NULL) {
|
if (m_display != NULL) {
|
||||||
enableDPMS(m_dpmsEnabled);
|
enableDPMS(m_dpmsEnabled);
|
||||||
XSetScreenSaver(m_display, m_timeout, m_interval,
|
m_impl->XSetScreenSaver(m_display, m_timeout, m_interval,
|
||||||
m_preferBlanking, m_allowExposures);
|
m_preferBlanking, m_allowExposures);
|
||||||
clearWatchForXScreenSaver();
|
clearWatchForXScreenSaver();
|
||||||
XWindowsUtil::ErrorLock lock(m_display);
|
XWindowsUtil::ErrorLock lock(m_display);
|
||||||
XSelectInput(m_display, DefaultRootWindow(m_display), m_rootEventMask);
|
m_impl->XSelectInput(m_display, DefaultRootWindow(m_display),
|
||||||
|
m_rootEventMask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -221,8 +225,8 @@ XWindowsScreenSaver::enable()
|
||||||
updateDisableTimer();
|
updateDisableTimer();
|
||||||
|
|
||||||
// for built-in X screen saver
|
// for built-in X screen saver
|
||||||
XSetScreenSaver(m_display, m_timeout, m_interval,
|
m_impl->XSetScreenSaver(m_display, m_timeout, m_interval, m_preferBlanking,
|
||||||
m_preferBlanking, m_allowExposures);
|
m_allowExposures);
|
||||||
|
|
||||||
// for DPMS
|
// for DPMS
|
||||||
enableDPMS(m_dpmsEnabled);
|
enableDPMS(m_dpmsEnabled);
|
||||||
|
@ -236,10 +240,10 @@ XWindowsScreenSaver::disable()
|
||||||
updateDisableTimer();
|
updateDisableTimer();
|
||||||
|
|
||||||
// use built-in X screen saver
|
// use built-in X screen saver
|
||||||
XGetScreenSaver(m_display, &m_timeout, &m_interval,
|
m_impl->XGetScreenSaver(m_display, &m_timeout, &m_interval,
|
||||||
&m_preferBlanking, &m_allowExposures);
|
&m_preferBlanking, &m_allowExposures);
|
||||||
XSetScreenSaver(m_display, 0, m_interval,
|
m_impl->XSetScreenSaver(m_display, 0, m_interval, m_preferBlanking,
|
||||||
m_preferBlanking, m_allowExposures);
|
m_allowExposures);
|
||||||
|
|
||||||
// for DPMS
|
// for DPMS
|
||||||
m_dpmsEnabled = isDPMSEnabled();
|
m_dpmsEnabled = isDPMSEnabled();
|
||||||
|
@ -267,7 +271,7 @@ XWindowsScreenSaver::activate()
|
||||||
|
|
||||||
// try built-in X screen saver
|
// try built-in X screen saver
|
||||||
if (m_timeout != 0) {
|
if (m_timeout != 0) {
|
||||||
XForceScreenSaver(m_display, ScreenSaverActive);
|
m_impl->XForceScreenSaver(m_display, ScreenSaverActive);
|
||||||
}
|
}
|
||||||
|
|
||||||
// try DPMS
|
// try DPMS
|
||||||
|
@ -297,7 +301,7 @@ XWindowsScreenSaver::deactivate()
|
||||||
}
|
}
|
||||||
|
|
||||||
// use built-in X screen saver
|
// use built-in X screen saver
|
||||||
XForceScreenSaver(m_display, ScreenSaverReset);
|
m_impl->XForceScreenSaver(m_display, ScreenSaverReset);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
@ -326,14 +330,14 @@ XWindowsScreenSaver::findXScreenSaver()
|
||||||
Window root = DefaultRootWindow(m_display);
|
Window root = DefaultRootWindow(m_display);
|
||||||
Window rw, pw, *cw;
|
Window rw, pw, *cw;
|
||||||
unsigned int nc;
|
unsigned int nc;
|
||||||
if (XQueryTree(m_display, root, &rw, &pw, &cw, &nc)) {
|
if (m_impl->XQueryTree(m_display, root, &rw, &pw, &cw, &nc)) {
|
||||||
for (unsigned int i = 0; i < nc; ++i) {
|
for (unsigned int i = 0; i < nc; ++i) {
|
||||||
if (isXScreenSaver(cw[i])) {
|
if (isXScreenSaver(cw[i])) {
|
||||||
setXScreenSaver(cw[i]);
|
setXScreenSaver(cw[i]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
XFree(cw);
|
m_impl->XFree(cw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,7 +361,7 @@ XWindowsScreenSaver::setXScreenSaver(Window window)
|
||||||
XWindowAttributes attr;
|
XWindowAttributes attr;
|
||||||
{
|
{
|
||||||
XWindowsUtil::ErrorLock lock(m_display, &error);
|
XWindowsUtil::ErrorLock lock(m_display, &error);
|
||||||
XGetWindowAttributes(m_display, m_xscreensaver, &attr);
|
m_impl->XGetWindowAttributes(m_display, m_xscreensaver, &attr);
|
||||||
}
|
}
|
||||||
setXScreenSaverActive(!error && attr.map_state != IsUnmapped);
|
setXScreenSaverActive(!error && attr.map_state != IsUnmapped);
|
||||||
|
|
||||||
|
@ -430,7 +434,7 @@ XWindowsScreenSaver::sendXScreenSaverCommand(Atom cmd, long arg1, long arg2)
|
||||||
bool error = false;
|
bool error = false;
|
||||||
{
|
{
|
||||||
XWindowsUtil::ErrorLock lock(m_display, &error);
|
XWindowsUtil::ErrorLock lock(m_display, &error);
|
||||||
XSendEvent(m_display, m_xscreensaver, False, 0, &event);
|
m_impl->XSendEvent(m_display, m_xscreensaver, False, 0, &event);
|
||||||
}
|
}
|
||||||
if (error) {
|
if (error) {
|
||||||
findXScreenSaver();
|
findXScreenSaver();
|
||||||
|
@ -447,11 +451,11 @@ XWindowsScreenSaver::watchForXScreenSaver()
|
||||||
Window root = DefaultRootWindow(m_display);
|
Window root = DefaultRootWindow(m_display);
|
||||||
Window rw, pw, *cw;
|
Window rw, pw, *cw;
|
||||||
unsigned int nc;
|
unsigned int nc;
|
||||||
if (XQueryTree(m_display, root, &rw, &pw, &cw, &nc)) {
|
if (m_impl->XQueryTree(m_display, root, &rw, &pw, &cw, &nc)) {
|
||||||
for (unsigned int i = 0; i < nc; ++i) {
|
for (unsigned int i = 0; i < nc; ++i) {
|
||||||
addWatchXScreenSaver(cw[i]);
|
addWatchXScreenSaver(cw[i]);
|
||||||
}
|
}
|
||||||
XFree(cw);
|
m_impl->XFree(cw);
|
||||||
}
|
}
|
||||||
|
|
||||||
// now check for xscreensaver window in case it set the property
|
// now check for xscreensaver window in case it set the property
|
||||||
|
@ -469,7 +473,7 @@ XWindowsScreenSaver::clearWatchForXScreenSaver()
|
||||||
XWindowsUtil::ErrorLock lock(m_display);
|
XWindowsUtil::ErrorLock lock(m_display);
|
||||||
for (WatchList::iterator index = m_watchWindows.begin();
|
for (WatchList::iterator index = m_watchWindows.begin();
|
||||||
index != m_watchWindows.end(); ++index) {
|
index != m_watchWindows.end(); ++index) {
|
||||||
XSelectInput(m_display, index->first, index->second);
|
m_impl->XSelectInput(m_display, index->first, index->second);
|
||||||
}
|
}
|
||||||
m_watchWindows.clear();
|
m_watchWindows.clear();
|
||||||
}
|
}
|
||||||
|
@ -482,7 +486,7 @@ XWindowsScreenSaver::addWatchXScreenSaver(Window window)
|
||||||
XWindowAttributes attr;
|
XWindowAttributes attr;
|
||||||
{
|
{
|
||||||
XWindowsUtil::ErrorLock lock(m_display, &error);
|
XWindowsUtil::ErrorLock lock(m_display, &error);
|
||||||
XGetWindowAttributes(m_display, window, &attr);
|
m_impl->XGetWindowAttributes(m_display, window, &attr);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if successful and window uses override_redirect (like xscreensaver
|
// if successful and window uses override_redirect (like xscreensaver
|
||||||
|
@ -491,8 +495,8 @@ XWindowsScreenSaver::addWatchXScreenSaver(Window window)
|
||||||
error = false;
|
error = false;
|
||||||
{
|
{
|
||||||
XWindowsUtil::ErrorLock lock(m_display, &error);
|
XWindowsUtil::ErrorLock lock(m_display, &error);
|
||||||
XSelectInput(m_display, window,
|
m_impl->XSelectInput(m_display, window,
|
||||||
attr.your_event_mask | PropertyChangeMask);
|
attr.your_event_mask | PropertyChangeMask);
|
||||||
}
|
}
|
||||||
if (!error) {
|
if (!error) {
|
||||||
// if successful then add the window to our list
|
// if successful then add the window to our list
|
||||||
|
@ -535,7 +539,7 @@ XWindowsScreenSaver::handleDisableTimer(const Event&, void*)
|
||||||
event.xmotion.same_screen = True;
|
event.xmotion.same_screen = True;
|
||||||
|
|
||||||
XWindowsUtil::ErrorLock lock(m_display);
|
XWindowsUtil::ErrorLock lock(m_display);
|
||||||
XSendEvent(m_display, m_xscreensaver, False, 0, &event);
|
m_impl->XSendEvent(m_display, m_xscreensaver, False, 0, &event);
|
||||||
|
|
||||||
m_disablePos = 20 - m_disablePos;
|
m_disablePos = 20 - m_disablePos;
|
||||||
}
|
}
|
||||||
|
@ -548,7 +552,8 @@ XWindowsScreenSaver::activateDPMS(bool activate)
|
||||||
if (m_dpms) {
|
if (m_dpms) {
|
||||||
// DPMSForceLevel will generate a BadMatch if DPMS is disabled
|
// DPMSForceLevel will generate a BadMatch if DPMS is disabled
|
||||||
XWindowsUtil::ErrorLock lock(m_display);
|
XWindowsUtil::ErrorLock lock(m_display);
|
||||||
DPMSForceLevel(m_display, activate ? DPMSModeStandby : DPMSModeOn);
|
m_impl->DPMSForceLevel(m_display,
|
||||||
|
activate ? DPMSModeStandby : DPMSModeOn);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -559,10 +564,10 @@ XWindowsScreenSaver::enableDPMS(bool enable)
|
||||||
#if HAVE_X11_EXTENSIONS_DPMS_H
|
#if HAVE_X11_EXTENSIONS_DPMS_H
|
||||||
if (m_dpms) {
|
if (m_dpms) {
|
||||||
if (enable) {
|
if (enable) {
|
||||||
DPMSEnable(m_display);
|
m_impl->DPMSEnable(m_display);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
DPMSDisable(m_display);
|
m_impl->DPMSDisable(m_display);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -575,7 +580,7 @@ XWindowsScreenSaver::isDPMSEnabled() const
|
||||||
if (m_dpms) {
|
if (m_dpms) {
|
||||||
CARD16 level;
|
CARD16 level;
|
||||||
BOOL state;
|
BOOL state;
|
||||||
DPMSInfo(m_display, &level, &state);
|
m_impl->DPMSInfo(m_display, &level, &state);
|
||||||
return (state != False);
|
return (state != False);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -593,7 +598,7 @@ XWindowsScreenSaver::isDPMSActivated() const
|
||||||
if (m_dpms) {
|
if (m_dpms) {
|
||||||
CARD16 level;
|
CARD16 level;
|
||||||
BOOL state;
|
BOOL state;
|
||||||
DPMSInfo(m_display, &level, &state);
|
m_impl->DPMSInfo(m_display, &level, &state);
|
||||||
return (level != DPMSModeOn);
|
return (level != DPMSModeOn);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include "barrier/IScreenSaver.h"
|
#include "barrier/IScreenSaver.h"
|
||||||
#include "base/IEventQueue.h"
|
#include "base/IEventQueue.h"
|
||||||
#include "common/stdmap.h"
|
#include "common/stdmap.h"
|
||||||
|
#include "XWindowsImpl.h"
|
||||||
|
|
||||||
#if X_DISPLAY_MISSING
|
#if X_DISPLAY_MISSING
|
||||||
# error X11 is required to build barrier
|
# error X11 is required to build barrier
|
||||||
|
@ -34,7 +35,8 @@ class EventQueueTimer;
|
||||||
//! X11 screen saver implementation
|
//! X11 screen saver implementation
|
||||||
class XWindowsScreenSaver : public IScreenSaver {
|
class XWindowsScreenSaver : public IScreenSaver {
|
||||||
public:
|
public:
|
||||||
XWindowsScreenSaver(Display*, Window, void* eventTarget, IEventQueue* events);
|
XWindowsScreenSaver(IXWindowsImpl* impl, Display*, Window,
|
||||||
|
void* eventTarget, IEventQueue* events);
|
||||||
virtual ~XWindowsScreenSaver();
|
virtual ~XWindowsScreenSaver();
|
||||||
|
|
||||||
//! @name manipulators
|
//! @name manipulators
|
||||||
|
@ -112,6 +114,8 @@ private:
|
||||||
private:
|
private:
|
||||||
typedef std::map<Window, long> WatchList;
|
typedef std::map<Window, long> WatchList;
|
||||||
|
|
||||||
|
IXWindowsImpl* m_impl;
|
||||||
|
|
||||||
// the X display
|
// the X display
|
||||||
Display* m_display;
|
Display* m_display;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue