]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/app.cpp
More fixes to make Borland compile this in Unicode mode.
[wxWidgets.git] / src / motif / app.cpp
index 65859d3f7b046ab1903f579bf5c7f2fe8475d42e..b70716f889f56348a1437c90a52d2d0a3543f5c4 100644 (file)
 
 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;
 
@@ -74,6 +75,13 @@ bool wxApp::Initialize()
 
     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();
 
@@ -151,6 +159,13 @@ void wxApp::CleanUp()
     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,
@@ -211,9 +226,8 @@ int wxEntry( int argc, char *argv[] )
     // 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())
@@ -438,15 +452,16 @@ void wxApp::OnIdle(wxIdleEvent& event)
 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;
 }
 
@@ -494,9 +509,9 @@ void wxApp::DeletePendingObjects()
 
 #if wxUSE_THREADS
 void wxApp::ProcessPendingEvents()
-
-    wxNode *node = wxPendingEvents.First();
-    wxCriticalSectionLocker locker(wxPendingEventsLocker);
+{
+    wxNode *node = wxPendingEvents->First();
+    wxCriticalSectionLocker locker(*wxPendingEventsLocker);
 
     while (node)
     {
@@ -505,10 +520,10 @@ void wxApp::ProcessPendingEvents()
         handler->ProcessPendingEvents();
 
         delete node;
-        node = wxPendingEvents.First();
+        node = wxPendingEvents->First();
     }
-
-#endif
+}
+#endif // wxUSE_THREADS
 
 wxLog* wxApp::CreateLogTarget()
 {
@@ -519,8 +534,8 @@ wxWindow* wxApp::GetTopWindow() const
 {
     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;
 }