#ifndef _WX_UNIX_EVTLOOP_H_
#define _WX_UNIX_EVTLOOP_H_
-#include "wx/private/fdiodispatcher.h"
-#include "wx/unix/private/timer.h"
-#include "wx/unix/pipe.h"
+#if wxUSE_CONSOLE_EVENTLOOP
// ----------------------------------------------------------------------------
-// wxEventLoop
+// wxConsoleEventLoop
// ----------------------------------------------------------------------------
+class wxFDIODispatcher;
+class wxUnixEventLoopSource;
+
+namespace wxPrivate
+{
+ class PipeIOHandler;
+}
+
class WXDLLIMPEXP_BASE wxConsoleEventLoop : public wxEventLoopManual
{
public:
// initialize the event loop, use IsOk() to check if we were successful
wxConsoleEventLoop();
+ virtual ~wxConsoleEventLoop();
// implement base class pure virtuals
virtual bool Pending() const;
virtual bool Dispatch();
+ virtual int DispatchTimeout(unsigned long timeout);
virtual void WakeUp();
virtual bool IsOk() const { return m_dispatcher != NULL; }
+ virtual bool YieldFor(long WXUNUSED(eventsToProcess)) { return true; }
+
+#if wxUSE_EVENTLOOP_SOURCE
+ virtual wxEventLoopSource *
+ AddSourceForFD(int fd, wxEventLoopSourceHandler *handler, int flags);
+#endif // wxUSE_EVENTLOOP_SOURCE
protected:
virtual void OnNextIteration();
private:
// pipe used for wake up messages: when a child thread wants to wake up
// the event loop in the main thread it writes to this pipe
- class PipeIOHandler : public wxFDIOHandler
- {
- public:
- // default ctor does nothing, call Create() to really initialize the
- // object
- PipeIOHandler() { }
-
- bool Create();
-
- // this method can be, and normally is, called from another thread
- void WakeUp();
-
- int GetReadFd() { return m_pipe[wxPipe::Read]; }
-
- // implement wxFDIOHandler pure virtual methods
- virtual void OnReadWaiting();
- virtual void OnWriteWaiting() { }
- virtual void OnExceptionWaiting() { }
-
- private:
- wxPipe m_pipe;
- };
-
- PipeIOHandler m_wakeupPipe;
+ wxPrivate::PipeIOHandler *m_wakeupPipe;
// either wxSelectDispatcher or wxEpollDispatcher
wxFDIODispatcher *m_dispatcher;
- DECLARE_NO_COPY_CLASS(wxConsoleEventLoop)
+ wxDECLARE_NO_COPY_CLASS(wxConsoleEventLoop);
};
+#endif // wxUSE_CONSOLE_EVENTLOOP
+
#endif // _WX_UNIX_EVTLOOP_H_