/src/wxwidgets/include/wx/unix/evtloop.h
Line | Count | Source |
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 wxWakeUpPipe; |
22 | | |
23 | | class WXDLLIMPEXP_BASE wxConsoleEventLoop |
24 | | #ifdef __DARWIN__ |
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 override; |
37 | | virtual bool Dispatch() override; |
38 | | virtual int DispatchTimeout(unsigned long timeout) override; |
39 | | virtual void WakeUp() override; |
40 | 0 | virtual bool IsOk() const override { return m_dispatcher != nullptr; } |
41 | | |
42 | | protected: |
43 | | virtual void OnNextIteration() override; |
44 | | virtual void DoYieldFor(long eventsToProcess) override; |
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 | | wxWakeUpPipe *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_ |