]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/memory.cpp
document On{Open,Save}Document()
[wxWidgets.git] / src / common / memory.cpp
index ae3b6383b52620a8538455ec86648aa873f0e7bd..4f593c3de1b5fe89c1112a4714e3a3349898acb0 100644 (file)
@@ -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)