]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/evtloop.h
need to include wx/msw/private.h to get GetHwnd() which is used here
[wxWidgets.git] / include / wx / evtloop.h
index 4213af21cd0619fa880da9684218e600bc5a3572..adbb15efa01d128190b5b464f624480ec3878c8d 100644 (file)
@@ -66,6 +66,44 @@ protected:
     DECLARE_NO_COPY_CLASS(wxEventLoopBase)
 };
 
+#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXDFB__)
+
+// this class can be used to implement a standard event loop logic using
+// Pending() and Dispatch()
+//
+// it also handles idle processing automatically
+class WXDLLEXPORT wxEventLoopManual : public wxEventLoopBase
+{
+public:
+    wxEventLoopManual();
+
+    // enters a loop calling OnNextIteration(), Pending() and Dispatch() and
+    // terminating when Exit() is called
+    virtual int Run();
+
+    // sets the "should exit" flag and wakes up the loop so that it terminates
+    // soon
+    virtual void Exit(int rc = 0);
+
+protected:
+    // implement this to wake up the loop: usually done by posting a dummy event
+    // to it (called from Exit())
+    virtual void WakeUp() = 0;
+
+    // may be overridden to perform some action at the start of each new event
+    // loop iteration
+    virtual void OnNextIteration() { }
+
+
+    // the loop exit code
+    int m_exitcode;
+
+    // should we exit the loop?
+    bool m_shouldExit;
+};
+
+#endif // platforms using "manual" loop
+
 // we're moving away from old m_impl wxEventLoop model as otherwise the user
 // code doesn't have access to platform-specific wxEventLoop methods and this
 // can sometimes be very useful (e.g. under MSW this is necessary for
@@ -77,6 +115,8 @@ protected:
     #include "wx/msw/evtloop.h"
 #elif defined(__WXMAC__)
     #include "wx/mac/evtloop.h"
+#elif defined(__WXDFB__)
+    #include "wx/dfb/evtloop.h"
 #else // other platform
 
 class WXDLLEXPORT wxEventLoopImpl;