wxENTER_CRIT_SECT( Lock() );
if ( !m_pendingEvents )
+ {
m_pendingEvents = new wxList;
+ m_pendingEvents->DeleteContents(true);
+ }
m_pendingEvents->Append(eventCopy);
wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
- // 3) Inform the system that new pending events are somwehere,
+ // 3) Inform the system that new pending events are somewhere,
// and that these should be processed in idle time.
wxWakeUpIdle();
}
{
wxEvent *event = (wxEvent *)node->GetData();
- m_pendingEvents->Erase(node);
-
wxLEAVE_CRIT_SECT( Lock() );
ProcessEvent(*event);
- delete event;
wxENTER_CRIT_SECT( Lock() );
+ m_pendingEvents->Erase(node);
+
if ( !--n )
break;
}