]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/app.cpp
1. added wxTreeCtrl::DeleteChildren()
[wxWidgets.git] / src / motif / app.cpp
index 79e667aa01ffbf186c9b2e705b4b5d98f1a07161..622e9c126eee70ae7311533beec2d36a43816772 100644 (file)
@@ -67,14 +67,6 @@ bool wxApp::Initialize()
     wxBuffer = new char[BUFSIZ + 512];
 #endif
 
-#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
-
-    streambuf* sBuf = new wxDebugStreamBuf;
-    ostream* oStr = new ostream(sBuf) ;
-    wxDebugContext::SetStream(oStr, sBuf);
-
-#endif
-  
     wxClassInfo::InitializeClasses();
 
     wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING);
@@ -151,6 +143,22 @@ void wxApp::CleanUp()
 
     wxClassInfo::CleanUpClasses();
 
+    delete wxTheApp;
+    wxTheApp = NULL;
+  
+#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,
+    // as a special case. Then when dumping we need to ignore
+    // wxDebugContext, too.
+    if (wxDebugContext::CountObjectsLeft(TRUE) > 0)
+    {
+      wxLogDebug("There were memory leaks.\n");
+      wxDebugContext::Dump();
+      wxDebugContext::PrintStatistics();
+    }
+#endif
+  
     // do it as the very last thing because everything else can log messages
     wxLog::DontCreateOnDemand();
     // do it as the very last thing because everything else can log messages
@@ -159,8 +167,19 @@ void wxApp::CleanUp()
 
 int wxEntry( int argc, char *argv[] )
 {
+#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
+    // This seems to be necessary since there are 'rogue'
+    // objects present at this point (perhaps global objects?)
+    // Setting a checkpoint will ignore them as far as the
+    // memory checking facility is concerned.
+    // Of course you may argue that memory allocated in globals should be
+    // checked, but this is a reasonable compromise.
+    wxDebugContext::SetCheckpoint();
+#endif
+
     if (!wxApp::Initialize())
       return FALSE;
+
     if (!wxTheApp)
     {
       if (!wxApp::GetInitializerFunction())
@@ -191,11 +210,11 @@ int wxEntry( int argc, char *argv[] )
     // into wxTopLevelWindows by getting created
     // in OnInit().
   
-    if (!wxTheApp->OnInit()) return 0;
-
     int retValue = 0;
-  
-    if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun();
+    if (wxTheApp->OnInit())
+    {
+      if (wxTheApp->Initialized()) retValue = wxTheApp->OnRun();
+    }
 
     // flush the logged messages if any
     wxLog *pLog = wxLog::GetActiveTarget();
@@ -214,27 +233,9 @@ int wxEntry( int argc, char *argv[] )
     wxTheApp->DeletePendingObjects();
   
     wxTheApp->OnExit();
-
   
     wxApp::CleanUp();
 
-    delete wxTheApp;
-    wxTheApp = NULL;
-  
-#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,
-    // as a special case. Then when dumping we need to ignore
-    // wxDebugContext, too.
-    if (wxDebugContext::CountObjectsLeft() > 0)
-    {
-      wxTrace("There were memory leaks.\n");
-      wxDebugContext::Dump();
-      wxDebugContext::PrintStatistics();
-    }
-    wxDebugContext::SetStream(NULL, NULL);
-#endif
-  
     return retValue;
 };
 
@@ -437,7 +438,7 @@ bool wxApp::SendIdleEvents(wxWindow* win)
     if (event.MoreRequested())
         needMore = TRUE;
 
-       wxNode* node = win->GetChildren()->First();
+       wxNode* node = win->GetChildren().First();
        while (node)
        {
                wxWindow* win = (wxWindow*) node->Data();