00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef CXWINDOWSSCREENSAVER_H
00016 #define CXWINDOWSSCREENSAVER_H
00017
00018 #include "IScreenSaver.h"
00019 #include "stdmap.h"
00020 #if X_DISPLAY_MISSING
00021 # error X11 is required to build synergy
00022 #else
00023 # include <X11/Xlib.h>
00024 #endif
00025
00026 class CEvent;
00027 class CEventQueueTimer;
00028
00030 class CXWindowsScreenSaver : public IScreenSaver {
00031 public:
00032 CXWindowsScreenSaver(Display*, Window, void* eventTarget);
00033 virtual ~CXWindowsScreenSaver();
00034
00036
00037
00039
00043 bool handleXEvent(const XEvent*);
00044
00046
00050 void destroy();
00051
00053
00054
00055 virtual void enable();
00056 virtual void disable();
00057 virtual void activate();
00058 virtual void deactivate();
00059 virtual bool isActive() const;
00060
00061 private:
00062
00063
00064 bool findXScreenSaver();
00065
00066
00067 void setXScreenSaver(Window);
00068
00069
00070 bool isXScreenSaver(Window) const;
00071
00072
00073
00074 void setXScreenSaverActive(bool activated);
00075
00076
00077 void sendXScreenSaverCommand(Atom, long = 0, long = 0);
00078
00079
00080
00081 void watchForXScreenSaver();
00082
00083
00084 void clearWatchForXScreenSaver();
00085
00086
00087 void addWatchXScreenSaver(Window window);
00088
00089
00090 void updateDisableTimer();
00091
00092
00093 void handleDisableTimer(const CEvent&, void*);
00094
00095
00096 void activateDPMS(bool activate);
00097
00098
00099 void enableDPMS(bool);
00100
00101
00102 bool isDPMSEnabled() const;
00103
00104
00105 bool isDPMSActivated() const;
00106
00107 private:
00108 typedef std::map<Window, long> CWatchList;
00109
00110
00111 Display* m_display;
00112
00113
00114 Window m_xscreensaverSink;
00115
00116
00117 void* m_eventTarget;
00118
00119
00120 Window m_xscreensaver;
00121
00122
00123 bool m_xscreensaverActive;
00124
00125
00126 long m_rootEventMask;
00127
00128
00129 CWatchList m_watchWindows;
00130
00131
00132 Atom m_atomScreenSaver;
00133 Atom m_atomScreenSaverVersion;
00134 Atom m_atomScreenSaverActivate;
00135 Atom m_atomScreenSaverDeactivate;
00136
00137
00138 int m_timeout;
00139 int m_interval;
00140 int m_preferBlanking;
00141 int m_allowExposures;
00142
00143
00144 bool m_dpms;
00145 bool m_dpmsEnabled;
00146
00147
00148 bool m_disabled;
00149
00150
00151
00152
00153 bool m_suppressDisable;
00154
00155
00156 CEventQueueTimer* m_disableTimer;
00157
00158
00159
00160
00161 SInt32 m_disablePos;
00162 };
00163
00164 #endif