X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bc385ba9ebd0185d5bc3dcbf9fb3f35e3eac4d7a..29343d04928fbc2b38258c61623d223aaa09087e:/src/common/init.cpp diff --git a/src/common/init.cpp b/src/common/init.cpp index 78576fb3c5..4f0aed6e49 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -27,6 +27,7 @@ #include "wx/app.h" #include "wx/debug.h" #include "wx/filefn.h" + #include "wx/log.h" #endif #include "wx/module.h" @@ -35,7 +36,7 @@ // global vars // ---------------------------------------------------------------------------- -wxApp * WXDLLEXPORT wxTheApp = NULL; +WXDLLEXPORT wxApp *wxTheApp = NULL; wxAppInitializerFunction wxAppBase::m_appInitFn = (wxAppInitializerFunction)NULL; @@ -76,13 +77,6 @@ void WXDLLEXPORT wxExit() abort(); } -// Yield to other apps/messages -bool WXDLLEXPORT wxYield() -{ - // do nothing - return TRUE; -} - // Yield to other apps/messages void WXDLLEXPORT wxWakeUpIdle() { @@ -155,18 +149,16 @@ int wxEntry(int argc, char **argv) #if wxUSE_UNICODE wxTheApp->argv = new wxChar*[argc+1]; - int mb_argc = 0; - while (mb_argc < argc) + for ( int mb_argc = 0; mb_argc < argc; mb_argc++ ) { - wxTheApp->argv[mb_argc] = wxStrdup(wxConvLibc.cMB2WX(argv[mb_argc])); - mb_argc++; + wxTheApp->argv[mb_argc] = wxStrdup(wxConvLocal.cMB2WX(argv[mb_argc])); } wxTheApp->argv[mb_argc] = (wxChar *)NULL; #else wxTheApp->argv = argv; #endif - wxString name = wxFileNameFromPath(argv[0]); + wxString name = wxFileNameFromPath(wxTheApp->argv[0]); wxStripExtension(name); wxTheApp->SetAppName(name); @@ -219,16 +211,29 @@ static void DoCleanUp() // continuing to use user defined log target is unsafe from now on because // some resources may be already unavailable, so replace it by something // more safe - wxLog *oldlog = wxLog::SetActiveTarget(new wxLogStderr); - if ( oldlog ) - delete oldlog; + wxLog::DontCreateOnDemand(); + delete wxLog::SetActiveTarget(new wxLogStderr); #endif // wxUSE_LOG wxModule::CleanUpModules(); wxClassInfo::CleanUpClasses(); + // TODO: this should really be done in ~wxApp +#if wxUSE_UNICODE + for ( int mb_argc = 0; mb_argc < wxTheApp->argc; mb_argc++ ) + { + free(wxTheApp->argv[mb_argc]); + } +#endif // wxUSE_UNICODE + // delete the application object delete wxTheApp; wxTheApp = (wxApp *)NULL; + +#if wxUSE_LOG + // and now delete the last logger as well + delete wxLog::SetActiveTarget(NULL); +#endif // wxUSE_LOG } +