- // ensure that we're the only thread to modify the pending events list
- wxENTER_CRIT_SECT( *wxPendingEventsLocker );
-
- if ( !wxPendingEvents )
- {
- wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
- return;
- }
-
- // iterate until the list becomes empty
- wxNode *node = wxPendingEvents->First();
- while (node)
- {
- wxEvtHandler *handler = (wxEvtHandler *)node->Data();
- delete node;
-
- // In ProcessPendingEvents(), new handlers might be add
- // and we can safely leave the critical section here.
- wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
- handler->ProcessPendingEvents();
- wxENTER_CRIT_SECT( *wxPendingEventsLocker );
-
- node = wxPendingEvents->First();
- }