]> git.saurik.com Git - wxWidgets.git/blame - include/wx/osx/evtloop.h
guarding agains NULL
[wxWidgets.git] / include / wx / osx / evtloop.h
CommitLineData
5c6eb3a8 1///////////////////////////////////////////////////////////////////////////////
233f5738
VZ
2// Name: wx/osx/evtloop.h
3// Purpose: simply forwards to wx/osx/carbon/evtloop.h or
4// wx/osx/cocoa/evtloop.h for consistency with the other Mac
5// headers
5c6eb3a8
SC
6// Author: Vadim Zeitlin
7// Modified by:
8// Created: 2006-01-12
9// RCS-ID: $Id$
10// Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
11// Licence: wxWindows licence
12///////////////////////////////////////////////////////////////////////////////
13
5cd99866
VZ
14#ifndef _WX_OSX_EVTLOOP_H_
15#define _WX_OSX_EVTLOOP_H_
5c6eb3a8 16
293a13ba
SC
17DECLARE_WXOSX_OPAQUE_CFREF( CFRunLoop );
18DECLARE_WXOSX_OPAQUE_CFREF( CFRunLoopObserver );
5cd99866 19
0056673c 20class WXDLLIMPEXP_BASE wxCFEventLoop : public wxEventLoopBase
5cd99866
VZ
21{
22public:
0056673c
SC
23 wxCFEventLoop();
24 virtual ~wxCFEventLoop();
25
26 // enters a loop calling OnNextIteration(), Pending() and Dispatch() and
27 // terminating when Exit() is called
28 virtual int Run();
ce00f59b 29
0056673c
SC
30 // sets the "should exit" flag and wakes up the loop so that it terminates
31 // soon
32 virtual void Exit(int rc = 0);
ce00f59b 33
0056673c
SC
34 // return true if any events are available
35 virtual bool Pending() const;
ce00f59b 36
0056673c
SC
37 // dispatch a single event, return false if we should exit from the loop
38 virtual bool Dispatch();
ce00f59b 39
0056673c
SC
40 // same as Dispatch() but doesn't wait for longer than the specified (in
41 // ms) timeout, return true if an event was processed, false if we should
42 // exit the loop or -1 if timeout expired
43 virtual int DispatchTimeout(unsigned long timeout);
44
45 // implement this to wake up the loop: usually done by posting a dummy event
46 // to it (can be called from non main thread)
47 virtual void WakeUp();
ce00f59b 48
0056673c
SC
49 virtual bool YieldFor(long eventsToProcess);
50
5cd99866
VZ
51#if wxUSE_EVENTLOOP_SOURCE
52 virtual wxEventLoopSource *
53 AddSourceForFD(int fd, wxEventLoopSourceHandler *handler, int flags);
54#endif // wxUSE_EVENTLOOP_SOURCE
55
293a13ba 56
5cd99866 57protected:
3cac3654
SC
58 void CommonModeObserverCallBack(CFRunLoopObserverRef observer, int activity);
59 void DefaultModeObserverCallBack(CFRunLoopObserverRef observer, int activity);
60
61 static void OSXCommonModeObserverCallBack(CFRunLoopObserverRef observer, int activity, void *info);
62 static void OSXDefaultModeObserverCallBack(CFRunLoopObserverRef observer, int activity, void *info);
63
5cd99866 64 // get the currently executing CFRunLoop
0056673c
SC
65 virtual CFRunLoopRef CFGetCurrentRunLoop() const;
66
67 virtual int DoDispatchTimeout(unsigned long timeout);
ce00f59b 68
80eee837 69 virtual void DoRun();
0056673c 70
80eee837 71 virtual void DoStop();
ce00f59b 72
0056673c
SC
73 // should we exit the loop?
74 bool m_shouldExit;
75
76 // the loop exit code
77 int m_exitcode;
ce00f59b 78
9aee1212
SC
79 // cfrunloop
80 CFRunLoopRef m_runLoop;
ce00f59b 81
3cac3654
SC
82 // common modes runloop observer
83 CFRunLoopObserverRef m_commonModeRunLoopObserver;
84
85 // default mode runloop observer
86 CFRunLoopObserverRef m_defaultModeRunLoopObserver;
ce00f59b 87
0056673c
SC
88private:
89 // process all already pending events and dispatch a new one (blocking
90 // until it appears in the event queue if necessary)
91 //
92 // returns the return value of DoDispatchTimeout()
93 int DoProcessEvents();
5cd99866
VZ
94};
95
96#if wxUSE_GUI
80eee837
SC
97
98#ifdef __WXOSX_COCOA__
99 #include "wx/osx/cocoa/evtloop.h"
100#else
101 #include "wx/osx/carbon/evtloop.h"
102#endif
103
104class WXDLLIMPEXP_FWD_CORE wxWindow;
105class WXDLLIMPEXP_FWD_CORE wxNonOwnedWindow;
106
107class WXDLLIMPEXP_CORE wxModalEventLoop : public wxGUIEventLoop
108{
109public:
cfb0ef70
SC
110 wxModalEventLoop(wxWindow *modalWindow);
111 wxModalEventLoop(WXWindow modalNativeWindow);
ce00f59b 112
80eee837
SC
113protected:
114 virtual void DoRun();
ce00f59b 115
80eee837 116 virtual void DoStop();
ce00f59b 117
80eee837
SC
118 // (in case) the modal window for this event loop
119 wxNonOwnedWindow* m_modalWindow;
cfb0ef70 120 WXWindow m_modalNativeWindow;
80eee837
SC
121};
122
5cd99866
VZ
123#endif // wxUSE_GUI
124
125#endif // _WX_OSX_EVTLOOP_H_