X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec38d07d0343b3fc5af03becd17ce798b96e05db..da16724e7a801ab1744938518375e5d898535a43:/include/wx/evtloop.h diff --git a/include/wx/evtloop.h b/include/wx/evtloop.h index df144fb97a..7bef1f38dd 100644 --- a/include/wx/evtloop.h +++ b/include/wx/evtloop.h @@ -96,46 +96,16 @@ public: virtual void WakeUp() = 0; - // pending events - // -------------- - - // process all events in the wxHandlersWithPendingEvents list -- it is necessary - // to call this function to process posted events. This happens during each - // event loop iteration in GUI mode but if there is no main loop, it may be - // also called directly. - virtual void ProcessPendingEvents(); - - // check if there are pending events on global pending event list - bool HasPendingEvents() const; - - // temporary suspends processing of the pending events - void SuspendProcessingOfPendingEvents(); - - // resume processing of the pending events previously stopped because of a - // call to SuspendProcessingOfPendingEvents() - void ResumeProcessingOfPendingEvents(); - - // called by ~wxEvtHandler to (eventually) remove the handler from the list of - // the handlers with pending events - void RemovePendingEventHandler(wxEvtHandler* toRemove); - - // adds an event handler to the list of the handlers with pending events - void AppendPendingEventHandler(wxEvtHandler* toAppend); - - // moves the event handler from the list of the handlers with pending events - //to the list of the handlers with _delayed_ pending events - void DelayPendingEventHandler(wxEvtHandler* toDelay); - - // idle handling // ------------- - // make sure that idle events are sent again + // make sure that idle events are sent again virtual void WakeUpIdle(); // this virtual function is called when the application - // becomes idle and normally just sends wxIdleEvent to all interested - // parties + // becomes idle and by default it forwards to wxApp::ProcessIdle() and + // while it can be overridden in a custom event loop, you must call the + // base class version to ensure that idle events are still generated // // it should return true if more idle events are needed, false if not virtual bool ProcessIdle(); @@ -188,19 +158,7 @@ protected: // the pointer to currently active loop static wxEventLoopBase *ms_activeLoop; - // the array of the handlers with pending events which needs to be processed - // inside ProcessPendingEvents() - wxEvtHandlerArray m_handlersWithPendingEvents; - - // helper array used by ProcessPendingEvents() - wxEvtHandlerArray m_handlersWithPendingDelayedEvents; - -#if wxUSE_THREADS - // this critical section protects both the lists above - wxCriticalSection m_handlersWithPendingEventsLocker; -#endif - - // Yield() helpers: + // YieldFor() helpers: bool m_isInsideYield; long m_eventsToProcessInsideYield; @@ -237,6 +195,15 @@ protected: // should we exit the loop? bool m_shouldExit; + +private: + // process all already pending events and dispatch a new one (blocking + // until it appears in the event queue if necessary) + // + // returns the return value of Dispatch() + bool ProcessEvents(); + + wxDECLARE_NO_COPY_CLASS(wxEventLoopManual); }; #endif // platforms using "manual" loop