#ifndef CXWINDOWSPRIMARYSCREEN_H #define CXWINDOWSPRIMARYSCREEN_H #include "CMutex.h" #include "KeyTypes.h" #include "MouseTypes.h" #include "IPrimaryScreen.h" #include class CThread; class CXWindowsPrimaryScreen : public IPrimaryScreen { public: CXWindowsPrimaryScreen(); virtual ~CXWindowsPrimaryScreen(); // IPrimaryScreen overrides virtual void open(CServer*); virtual void close(); virtual void enter(SInt32 xAbsolute, SInt32 yAbsolute); virtual void leave(); virtual void warpCursor(SInt32 xAbsolute, SInt32 yAbsolute); virtual void getSize(SInt32* width, SInt32* height) const; virtual SInt32 getJumpZoneSize() const; private: void selectEvents(Window) const; Cursor createBlankCursor(); void warpCursorNoLock(SInt32 xAbsolute, SInt32 yAbsolute); void eventThread(void*); KeyModifierMask mapModifier(unsigned int state) const; KeyID mapKey(KeyCode, KeyModifierMask) const; ButtonID mapButton(unsigned int button) const; private: CServer* m_server; CThread* m_eventThread; Display* m_display; int m_screen; Window m_root; SInt32 m_w, m_h; Window m_window; bool m_active; // X is not thread safe CMutex m_mutex; }; #endif