1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/gtk/evtloop.h
3 // Purpose: wxGTK event loop implementation
4 // Author: Vadim Zeitlin
7 // Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
8 // Licence: wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_GTK_EVTLOOP_H_
12 #define _WX_GTK_EVTLOOP_H_
14 // ----------------------------------------------------------------------------
15 // wxGUIEventLoop for wxGTK
16 // ----------------------------------------------------------------------------
18 typedef union _GdkEvent GdkEvent
;
20 #if wxUSE_EVENTLOOP_SOURCE
21 // maps event loop sources to gtk source ids
22 WX_DECLARE_HASH_MAP(wxUnixEventLoopSource
*, int, wxPointerHash
, wxPointerEqual
,
23 wxEventLoopSourceIdMap
);
26 class WXDLLIMPEXP_BASE wxGUIEventLoop
: public wxEventLoopBase
29 typedef wxUnixEventLoopSource Source
;
34 virtual void Exit(int rc
= 0);
35 virtual bool Pending() const;
36 virtual bool Dispatch();
37 virtual int DispatchTimeout(unsigned long timeout
);
38 virtual void WakeUp();
39 virtual bool YieldFor(long eventsToProcess
);
41 void StoreGdkEventForLaterProcessing(GdkEvent
* ev
)
42 { m_arrGdkEvents
.Add(ev
); }
44 #if wxUSE_EVENTLOOP_SOURCE
45 virtual wxUnixEventLoopSource
* CreateSource() const
47 return new wxUnixEventLoopSource();
50 virtual wxUnixEventLoopSource
* CreateSource(int res
,
51 wxEventLoopSourceHandler
* handler
,
54 return new wxUnixEventLoopSource(res
, handler
, flags
);
59 #if wxUSE_EVENTLOOP_SOURCE
60 // adding/removing sources
61 virtual bool DoAddSource(wxAbstractEventLoopSource
* source
);
62 virtual bool DoRemoveSource(wxAbstractEventLoopSource
* source
);
64 // map of event loop sources gtk ids
65 wxEventLoopSourceIdMap m_sourceIdMap
;
68 // the exit code of this event loop
71 // used to temporarily store events in DoYield()
72 wxArrayPtrVoid m_arrGdkEvents
;
74 wxDECLARE_NO_COPY_CLASS(wxGUIEventLoop
);
77 #endif // _WX_GTK_EVTLOOP_H_