// cleanup done after destroying wxTheApp static void DoCommonPostCleanup() { wxModule::CleanUpModules(); // we can't do this in wxApp itself because it doesn't know if argv had // been allocated #if wxUSE_UNICODE FreeConvertedArgs(); #endif // wxUSE_UNICODE // use Set(NULL) and not Get() to avoid creating a message output object on // demand when we just want to delete it delete wxMessageOutput::Set(NULL); #if wxUSE_LOG // call this first as it has a side effect: in addition to flushing all // logs for this thread, it also flushes everything logged from other // threads wxLog::FlushActive(); // and now delete the last logger as well // // we still don't disable log target auto-vivification even if any log // objects created now will result in memory leaks because it seems better // to leak memory which doesn't matter much considering the application is // exiting anyhow than to not show messages which could still be logged // from the user code (e.g. static dtors and such) delete wxLog::SetActiveTarget(NULL); #endif // wxUSE_LOG }
// we provide a wxEntryStart() wrapper taking "char *" pointer too bool wxEntryStart(int& argc, char **argv) { ConvertArgsToUnicode(argc, argv); if ( !wxEntryStart(argc, gs_initData.argv) ) { FreeConvertedArgs(); return false; } return true; }
// cleanup done after destroying wxTheApp static void DoCommonPostCleanup() { wxModule::CleanUpModules(); wxClassInfo::CleanUp(); // we can't do this in wxApp itself because it doesn't know if argv had // been allocated #if wxUSE_UNICODE FreeConvertedArgs(); #endif // wxUSE_UNICODE // Note: check for memory leaks is now done via wxDebugContextDumpDelayCounter #if wxUSE_LOG // and now delete the last logger as well delete wxLog::SetActiveTarget(NULL); #endif // wxUSE_LOG }
// cleanup done after destroying wxTheApp static void DoCommonPostCleanup() { wxModule::CleanUpModules(); // we can't do this in wxApp itself because it doesn't know if argv had // been allocated #if wxUSE_UNICODE FreeConvertedArgs(); #endif // wxUSE_UNICODE // use Set(NULL) and not Get() to avoid creating a message output object on // demand when we just want to delete it delete wxMessageOutput::Set(NULL); #if wxUSE_LOG // and now delete the last logger as well delete wxLog::SetActiveTarget(NULL); #endif // wxUSE_LOG }