1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: include/wx/osx/evtloop.h
3 // Purpose: simply forwards to wx/mac/carbon/evtloop.h for consistency with
4 // the other Mac headers
5 // Author: Vadim Zeitlin
9 // Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
10 // Licence: wxWindows licence
11 ///////////////////////////////////////////////////////////////////////////////
13 #ifndef _WX_OSX_EVTLOOP_H_
14 #define _WX_OSX_EVTLOOP_H_
16 DECLARE_WXOSX_OPAQUE_CFREF( CFRunLoop
);
17 DECLARE_WXOSX_OPAQUE_CFREF( CFRunLoopObserver
);
19 class WXDLLIMPEXP_BASE wxCFEventLoop
: public wxEventLoopBase
23 virtual ~wxCFEventLoop();
25 // enters a loop calling OnNextIteration(), Pending() and Dispatch() and
26 // terminating when Exit() is called
29 // sets the "should exit" flag and wakes up the loop so that it terminates
31 virtual void Exit(int rc
= 0);
33 // return true if any events are available
34 virtual bool Pending() const;
36 // dispatch a single event, return false if we should exit from the loop
37 virtual bool Dispatch();
39 // same as Dispatch() but doesn't wait for longer than the specified (in
40 // ms) timeout, return true if an event was processed, false if we should
41 // exit the loop or -1 if timeout expired
42 virtual int DispatchTimeout(unsigned long timeout
);
44 // implement this to wake up the loop: usually done by posting a dummy event
45 // to it (can be called from non main thread)
46 virtual void WakeUp();
48 virtual bool YieldFor(long eventsToProcess
);
50 #if wxUSE_EVENTLOOP_SOURCE
51 virtual wxEventLoopSource
*
52 AddSourceForFD(int fd
, wxEventLoopSourceHandler
*handler
, int flags
);
53 #endif // wxUSE_EVENTLOOP_SOURCE
55 void ObserverCallBack(CFRunLoopObserverRef observer
, int activity
);
58 // get the currently executing CFRunLoop
59 virtual CFRunLoopRef
CFGetCurrentRunLoop() const;
61 virtual int DoDispatchTimeout(unsigned long timeout
);
65 virtual void DoStop();
67 // should we exit the loop?
74 CFRunLoopRef m_runLoop
;
77 CFRunLoopObserverRef m_runLoopObserver
;
80 // process all already pending events and dispatch a new one (blocking
81 // until it appears in the event queue if necessary)
83 // returns the return value of DoDispatchTimeout()
84 int DoProcessEvents();
89 #ifdef __WXOSX_COCOA__
90 #include "wx/osx/cocoa/evtloop.h"
92 #include "wx/osx/carbon/evtloop.h"
95 class WXDLLIMPEXP_FWD_CORE wxWindow
;
96 class WXDLLIMPEXP_FWD_CORE wxNonOwnedWindow
;
98 class WXDLLIMPEXP_CORE wxModalEventLoop
: public wxGUIEventLoop
101 wxModalEventLoop(wxWindow
*modalWindow
);
102 wxModalEventLoop(WXWindow modalNativeWindow
);
105 virtual void DoRun();
107 virtual void DoStop();
109 // (in case) the modal window for this event loop
110 wxNonOwnedWindow
* m_modalWindow
;
111 WXWindow m_modalNativeWindow
;
116 #endif // _WX_OSX_EVTLOOP_H_