no real change: rename wxPendingEvents to wxHandlersWithPendingEvents since its current name is misleading; that's not a list of events but a list of event handlers

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57623 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi 2008-12-28 19:30:43 +00:00
parent 4520d5836a
commit 079f4130b8
4 changed files with 44 additions and 44 deletions

View File

@ -244,8 +244,8 @@ public:
// (already) be dispatched
static bool IsMainLoopRunning();
// process all events in the wxPendingEvents list -- it is necessary to
// call this function to process posted events. This happens during each
// 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();

View File

@ -3080,9 +3080,9 @@ typedef void (wxEvtHandler::*wxClipboardTextEventFunction)(wxClipboardTextEvent&
// list containing event handlers with pending events for them
//
// notice that each event handler should occur at most once in this list
extern WXDLLIMPEXP_BASE wxList *wxPendingEvents;
extern WXDLLIMPEXP_BASE wxList *wxHandlersWithPendingEvents;
#if wxUSE_THREADS
extern WXDLLIMPEXP_BASE wxCriticalSection *wxPendingEventsLocker;
extern WXDLLIMPEXP_BASE wxCriticalSection *wxHandlersWithPendingEventsLocker;
#endif
// ----------------------------------------------------------------------------

View File

@ -163,7 +163,7 @@ bool wxAppConsoleBase::Initialize(int& WXUNUSED(argc), wxChar **argv)
#endif // wxUSE_INTL
#if wxUSE_THREADS
wxPendingEventsLocker = new wxCriticalSection;
wxHandlersWithPendingEventsLocker = new wxCriticalSection;
#endif
#ifndef __WXPALMOS__
@ -190,12 +190,12 @@ void wxAppConsoleBase::CleanUp()
m_mainLoop = NULL;
}
delete wxPendingEvents;
wxPendingEvents = NULL;
delete wxHandlersWithPendingEvents;
wxHandlersWithPendingEvents = NULL;
#if wxUSE_THREADS
delete wxPendingEventsLocker;
wxPendingEventsLocker = NULL;
delete wxHandlersWithPendingEventsLocker;
wxHandlersWithPendingEventsLocker = NULL;
#endif // wxUSE_THREADS
}
@ -327,11 +327,11 @@ bool wxAppConsoleBase::Dispatch()
bool wxAppConsoleBase::HasPendingEvents() const
{
wxENTER_CRIT_SECT( *wxPendingEventsLocker );
wxENTER_CRIT_SECT( *wxHandlersWithPendingEventsLocker );
bool has = wxPendingEvents && !wxPendingEvents->IsEmpty();
bool has = wxHandlersWithPendingEvents && !wxHandlersWithPendingEvents->IsEmpty();
wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
wxLEAVE_CRIT_SECT( *wxHandlersWithPendingEventsLocker );
return has;
}
@ -347,34 +347,34 @@ bool wxAppConsoleBase::IsMainLoopRunning()
void wxAppConsoleBase::ProcessPendingEvents()
{
#if wxUSE_THREADS
if ( !wxPendingEventsLocker )
if ( !wxHandlersWithPendingEventsLocker )
return;
#endif
wxENTER_CRIT_SECT( *wxPendingEventsLocker );
wxENTER_CRIT_SECT( *wxHandlersWithPendingEventsLocker );
if (wxPendingEvents)
if (wxHandlersWithPendingEvents)
{
// iterate until the list becomes empty: the handlers remove themselves
// from it when they don't have any more pending events
wxList::compatibility_iterator node = wxPendingEvents->GetFirst();
wxList::compatibility_iterator node = wxHandlersWithPendingEvents->GetFirst();
while (node)
{
// In ProcessPendingEvents(), new handlers might be add
// and we can safely leave the critical section here.
wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
wxLEAVE_CRIT_SECT( *wxHandlersWithPendingEventsLocker );
wxEvtHandler *handler = (wxEvtHandler *)node->GetData();
handler->ProcessPendingEvents();
wxENTER_CRIT_SECT( *wxPendingEventsLocker );
wxENTER_CRIT_SECT( *wxHandlersWithPendingEventsLocker );
// restart as the iterators could have been invalidated
node = wxPendingEvents->GetFirst();
node = wxHandlersWithPendingEvents->GetFirst();
}
}
wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
wxLEAVE_CRIT_SECT( *wxHandlersWithPendingEventsLocker );
}
void wxAppConsoleBase::WakeUpIdle()

View File

@ -145,11 +145,11 @@ IMPLEMENT_DYNAMIC_CLASS(wxEventTableEntryModule, wxModule)
// List containing event handlers with pending events (each handler can occur
// at most once here)
wxList *wxPendingEvents = NULL;
wxList *wxHandlersWithPendingEvents = NULL;
#if wxUSE_THREADS
// protects wxPendingEvents list
wxCriticalSection *wxPendingEventsLocker = NULL;
// protects wxHandlersWithPendingEvents list
wxCriticalSection *wxHandlersWithPendingEventsLocker = NULL;
#endif
// common event types are defined here, other event types are defined by the
@ -1089,25 +1089,25 @@ wxEvtHandler::~wxEvtHandler()
m_pendingEvents->DeleteContents(true);
delete m_pendingEvents;
// Remove us from wxPendingEvents if necessary.
if ( wxPendingEvents )
// Remove us from wxHandlersWithPendingEvents if necessary.
if ( wxHandlersWithPendingEvents )
{
#if wxUSE_THREADS
if (wxPendingEventsLocker)
wxENTER_CRIT_SECT(*wxPendingEventsLocker);
if (wxHandlersWithPendingEventsLocker)
wxENTER_CRIT_SECT(*wxHandlersWithPendingEventsLocker);
#endif
if ( wxPendingEvents->DeleteObject(this) )
if ( wxHandlersWithPendingEvents->DeleteObject(this) )
{
// check that we were present only once in the list
wxASSERT_MSG( !wxPendingEvents->Find(this),
"Handler occurs twice in wxPendingEvents list" );
wxASSERT_MSG( !wxHandlersWithPendingEvents->Find(this),
"Handler occurs twice in wxHandlersWithPendingEvents list" );
}
//else: we weren't in this list at all, it's ok
#if wxUSE_THREADS
if (wxPendingEventsLocker)
wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
if (wxHandlersWithPendingEventsLocker)
wxLEAVE_CRIT_SECT(*wxHandlersWithPendingEventsLocker);
#endif
}
@ -1146,19 +1146,19 @@ void wxEvtHandler::QueueEvent(wxEvent *event)
// 2) Add this event handler to list of event handlers that
// have pending events.
wxENTER_CRIT_SECT(*wxPendingEventsLocker);
wxENTER_CRIT_SECT(*wxHandlersWithPendingEventsLocker);
if ( !wxPendingEvents )
wxPendingEvents = new wxList;
if ( !wxPendingEvents->Find(this) )
wxPendingEvents->Append(this);
if ( !wxHandlersWithPendingEvents )
wxHandlersWithPendingEvents = new wxList;
if ( !wxHandlersWithPendingEvents->Find(this) )
wxHandlersWithPendingEvents->Append(this);
wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
wxLEAVE_CRIT_SECT(*wxHandlersWithPendingEventsLocker);
// only release m_pendingEventsLock now because otherwise there is a race
// condition as described in the ticket #9093: we could process the event
// just added to m_pendingEvents in our ProcessPendingEvents() below before
// we had time to append this pointer to wxPendingEvents list; thus
// we had time to append this pointer to wxHandlersWithPendingEvents list; thus
// breaking the invariant that a handler should be in the list iff it has
// any pending events to process
wxLEAVE_CRIT_SECT( m_pendingEventsLock );
@ -1190,13 +1190,13 @@ void wxEvtHandler::ProcessPendingEvents()
if ( m_pendingEvents->IsEmpty() )
{
#if wxUSE_THREADS
if (wxPendingEventsLocker)
wxENTER_CRIT_SECT(*wxPendingEventsLocker);
if (wxHandlersWithPendingEventsLocker)
wxENTER_CRIT_SECT(*wxHandlersWithPendingEventsLocker);
#endif
wxPendingEvents->DeleteObject(this);
wxHandlersWithPendingEvents->DeleteObject(this);
#if wxUSE_THREADS
if (wxPendingEventsLocker)
wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
if (wxHandlersWithPendingEventsLocker)
wxLEAVE_CRIT_SECT(*wxHandlersWithPendingEventsLocker);
#endif
}