71e9885be0
Any event sources should be registered with all the event loops, including the ones that will be started in the future, and not only the current (and potentially not even existing yet) one. So make AddSourceForFD() method static. To still allow it to do different things in console and GUI applications, as it must, virtualize it via the new wxEventLoopSourcesManager class which has different implementations in the two cases, returned via wxAppTraits as usual. Notice that this required moving the implementation of this method from src/osx/core/evtloop_cf.cpp to src/osx/core/utilsexc_cf.cpp as the former file is base-only and didn't have access to wxGUIAppTraits. See #10258. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
61 lines
1.7 KiB
C++
61 lines
1.7 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/unix/evtloop.h
|
|
// Purpose: declares wxEventLoop class
|
|
// Author: Lukasz Michalski (lm@zork.pl)
|
|
// Created: 2007-05-07
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2007 Lukasz Michalski
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_UNIX_EVTLOOP_H_
|
|
#define _WX_UNIX_EVTLOOP_H_
|
|
|
|
#if wxUSE_CONSOLE_EVENTLOOP
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxConsoleEventLoop
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class wxFDIODispatcher;
|
|
class wxUnixEventLoopSource;
|
|
class wxWakeUpPipeMT;
|
|
|
|
class WXDLLIMPEXP_BASE wxConsoleEventLoop
|
|
#ifdef __WXOSX__
|
|
: public wxCFEventLoop
|
|
#else
|
|
: public wxEventLoopManual
|
|
#endif
|
|
{
|
|
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; }
|
|
|
|
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
|
|
wxWakeUpPipeMT *m_wakeupPipe;
|
|
|
|
// either wxSelectDispatcher or wxEpollDispatcher
|
|
wxFDIODispatcher *m_dispatcher;
|
|
|
|
wxDECLARE_NO_COPY_CLASS(wxConsoleEventLoop);
|
|
};
|
|
|
|
#endif // wxUSE_CONSOLE_EVENTLOOP
|
|
|
|
#endif // _WX_UNIX_EVTLOOP_H_
|