extern char *wxBuffer;
extern wxList wxPendingDelete;
+
#if wxUSE_THREADS
-extern wxList wxPendingEvents;
-extern wxList wxPendingEventsLocker;
-#endif
+extern wxList *wxPendingEvents;
+extern wxCriticalSection *wxPendingEventsLocker;
+#endif // wxUSE_THREADS
wxApp *wxTheApp = NULL;
wxClassInfo::InitializeClasses();
+ // GL: I'm annoyed ... I don't know where to put this and I don't want to
+ // create a module for that as it's part of the core.
+#if wxUSE_THREADS
+ wxPendingEvents = new wxList();
+ wxPendingEventsLocker = new wxCriticalSection();
+#endif
+
wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
wxTheColourDatabase->Initialize();
delete wxTheApp;
wxTheApp = NULL;
+ // GL: I'm annoyed ... I don't know where to put this and I don't want to
+ // create a module for that as it's part of the core.
+#if wxUSE_THREADS
+ delete wxPendingEvents;
+ delete wxPendingEventsLocker;
+#endif
+
#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
// At this point we want to check if there are any memory
// blocks that aren't part of the wxDebugContext itself,
// GUI-specific initialization, such as creating an app context.
wxTheApp->OnInitGui();
- // Here frames insert themselves automatically
- // into wxTopLevelWindows by getting created
- // in OnInit().
+ // Here frames insert themselves automatically into wxTopLevelWindows by
+ // getting created in OnInit().
int retValue = 0;
if (wxTheApp->OnInit())
bool wxApp::SendIdleEvents()
{
bool needMore = FALSE;
- wxNode* node = wxTopLevelWindows.First();
+
+ wxWindowList::Node* node = wxTopLevelWindows.GetFirst();
while (node)
{
- wxWindow* win = (wxWindow*) node->Data();
+ wxWindow* win = node->GetData();
if (SendIdleEvents(win))
needMore = TRUE;
-
- node = node->Next();
+ node = node->GetNext();
}
+
return needMore;
}
#if wxUSE_THREADS
void wxApp::ProcessPendingEvents()
-
- wxNode *node = wxPendingEvents.First();
- wxCriticalSectionLocker locker(wxPendingEventsLocker);
+{
+ wxNode *node = wxPendingEvents->First();
+ wxCriticalSectionLocker locker(*wxPendingEventsLocker);
while (node)
{
handler->ProcessPendingEvents();
delete node;
- node = wxPendingEvents.First();
+ node = wxPendingEvents->First();
}
-
-#endif
+}
+#endif // wxUSE_THREADS
wxLog* wxApp::CreateLogTarget()
{
{
if (m_topWindow)
return m_topWindow;
- else if (wxTopLevelWindows.Number() > 0)
- return (wxWindow*) wxTopLevelWindows.First()->Data();
+ else if (wxTopLevelWindows.GetCount() > 0)
+ return wxTopLevelWindows.GetFirst()->GetData();
else
return NULL;
}