1 /////////////////////////////////////////////////////////////////////////////// 2 // Name: wx/unix/evtloop.h 3 // Purpose: declares wxEventLoop class 4 // Author: Lukasz Michalski (lm@zork.pl) 5 // Created: 2007-05-07 6 // Copyright: (c) 2007 Lukasz Michalski 7 // Licence: wxWindows licence 8 /////////////////////////////////////////////////////////////////////////////// 9 10 #ifndef _WX_UNIX_EVTLOOP_H_ 11 #define _WX_UNIX_EVTLOOP_H_ 12 13 #if wxUSE_CONSOLE_EVENTLOOP 14 15 // ---------------------------------------------------------------------------- 16 // wxConsoleEventLoop 17 // ---------------------------------------------------------------------------- 18 19 class wxEventLoopSource; 20 class wxFDIODispatcher; 21 class wxWakeUpPipeMT; 22 23 class WXDLLIMPEXP_BASE wxConsoleEventLoop 24 #ifdef __WXOSX__ 25 : public wxCFEventLoop 26 #else 27 : public wxEventLoopManual 28 #endif 29 { 30 public: 31 // initialize the event loop, use IsOk() to check if we were successful 32 wxConsoleEventLoop(); 33 virtual ~wxConsoleEventLoop(); 34 35 // implement base class pure virtuals 36 virtual bool Pending() const wxOVERRIDE; 37 virtual bool Dispatch() wxOVERRIDE; 38 virtual int DispatchTimeout(unsigned long timeout) wxOVERRIDE; 39 virtual void WakeUp() wxOVERRIDE; IsOk()40 virtual bool IsOk() const wxOVERRIDE { return m_dispatcher != NULL; } 41 42 protected: 43 virtual void OnNextIteration() wxOVERRIDE; 44 virtual void DoYieldFor(long eventsToProcess) wxOVERRIDE; 45 46 private: 47 // pipe used for wake up messages: when a child thread wants to wake up 48 // the event loop in the main thread it writes to this pipe 49 wxWakeUpPipeMT *m_wakeupPipe; 50 51 // the event loop source used to monitor this pipe 52 wxEventLoopSource* m_wakeupSource; 53 54 // either wxSelectDispatcher or wxEpollDispatcher 55 wxFDIODispatcher *m_dispatcher; 56 57 wxDECLARE_NO_COPY_CLASS(wxConsoleEventLoop); 58 }; 59 60 #endif // wxUSE_CONSOLE_EVENTLOOP 61 62 #endif // _WX_UNIX_EVTLOOP_H_ 63