]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/memory.cpp
cleaning up common OSX code
[wxWidgets.git] / src / common / memory.cpp
index 9bf20f536b4b61fe20d6b3701950b4b8b83bf495..4f593c3de1b5fe89c1112a4714e3a3349898acb0 100644 (file)
@@ -39,7 +39,7 @@
 #include "wx/ioswrap.h"
 
 #if !defined(__WATCOMC__) && !(defined(__VMS__) && ( __VMS_VER < 70000000 ) )\
-     && !defined( __MWERKS__ ) && !defined(__SALFORDC__)
+     && !defined( __MWERKS__ )
 #include <memory.h>
 #endif
 
@@ -452,6 +452,9 @@ static wxMarkerType markerCalc[2];
 int wxDebugContext::m_balign = (int)((char *)&markerCalc[1] - (char*)&markerCalc[0]);
 int wxDebugContext::m_balignmask = (int)((char *)&markerCalc[1] - (char*)&markerCalc[0]) - 1;
 
+// Pointer to global function to call at shutdown
+wxShutdownNotifyFunction wxDebugContext::sm_shutdownFn;
+
 wxDebugContext::wxDebugContext(void)
 {
 }
@@ -858,6 +861,11 @@ void wxDebugContext::OutputDumpLine(const wxChar *szFormat, ...)
     dbgout.Printf(buf);
 }
 
+void wxDebugContext::SetShutdownNotifyFunction(wxShutdownNotifyFunction shutdownFn)
+{
+    sm_shutdownFn = shutdownFn;
+}
+
 
 #if USE_THREADSAFE_MEMORY_ALLOCATION
 static bool memSectionOk = false;
@@ -1129,6 +1137,22 @@ void wxTraceLevel(int, const wxChar * ...)
 // All global variables are initialized to 0 at the very beginning, and this is just fine.
 int wxDebugContextDumpDelayCounter::sm_count;
 
+wxDebugContextDumpDelayCounter::wxDebugContextDumpDelayCounter()
+{
+    sm_count++;
+}
+
+wxDebugContextDumpDelayCounter::~wxDebugContextDumpDelayCounter()
+{
+    if ( !--sm_count )
+    {
+        // Notify app if we've been asked to do that
+        if( wxDebugContext::sm_shutdownFn )
+            wxDebugContext::sm_shutdownFn();
+        DoDump();
+    }
+}
+
 void wxDebugContextDumpDelayCounter::DoDump()
 {
     if (wxDebugContext::CountObjectsLeft(true) > 0)