X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e8e1149bd7154e04ad36100bfdcc0f81de9f1a89..18dbdd3c2785b504c02ebf3739503a0183cae39b:/src/common/init.cpp diff --git a/src/common/init.cpp b/src/common/init.cpp index 32288fd1e3..2fd5771f04 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -67,29 +67,29 @@ public: }; // we need a special kind of auto pointer to wxApp which not only deletes the -// pointer it holds in its dtor but also resets wxTheApp -wxDECLARE_SCOPED_PTR(wxApp, wxAppPtrBase); -wxDEFINE_SCOPED_PTR(wxApp, wxAppPtrBase); +// pointer it holds in its dtor but also resets the global application pointer +wxDECLARE_SCOPED_PTR(wxAppConsole, wxAppPtrBase); +wxDEFINE_SCOPED_PTR(wxAppConsole, wxAppPtrBase); class wxAppPtr : public wxAppPtrBase { public: - wxEXPLICIT wxAppPtr(wxApp *ptr = NULL) : wxAppPtrBase(ptr) { } + wxEXPLICIT wxAppPtr(wxAppConsole *ptr = NULL) : wxAppPtrBase(ptr) { } ~wxAppPtr() { if ( get() ) { // the pointer is going to be deleted in the base class dtor, don't // leave the dangling pointer! - wxTheApp = NULL; + wxApp::SetInstance(NULL); } } - void Set(wxApp *ptr) + void Set(wxAppConsole *ptr) { reset(ptr); - wxTheApp = ptr; + wxApp::SetInstance(ptr); } DECLARE_NO_COPY_CLASS(wxAppPtr) @@ -100,13 +100,13 @@ public: class wxCallAppCleanup { public: - wxCallAppCleanup(wxApp *app) : m_app(app) { } + wxCallAppCleanup(wxAppConsole *app) : m_app(app) { } ~wxCallAppCleanup() { if ( m_app ) m_app->CleanUp(); } void Dismiss() { m_app = NULL; } private: - wxApp *m_app; + wxAppConsole *m_app; }; // another tiny class which simply exists to ensure that wxEntryCleanup is @@ -206,8 +206,6 @@ static void FreeConvertedArgs() // initialization which is always done (not customizable) before wxApp creation static bool DoCommonPreInit() { - wxClassInfo::InitializeClasses(); - return true; } @@ -245,11 +243,7 @@ bool wxEntryStart(int& argc, wxChar **argv) if ( fnCreate ) { // he did, try to create the custom wxApp object - // - // NB: cast is needed because for the backwards-compatibility - // reasons wxTheApp is really a wxApp and not just - // wxAppConsole... - app.Set((wxApp*)(*fnCreate)()); + app.Set((*fnCreate)()); } } @@ -257,25 +251,22 @@ bool wxEntryStart(int& argc, wxChar **argv) { // either IMPLEMENT_APP() was not used at all or it failed -- in any // case we still need something - // - // NB: cast is needed because for the backwards-compatibility reasons - // wxTheApp is really a wxApp and not just wxAppConsole... - app.Set((wxApp *)new wxDummyConsoleApp); + app.Set(new wxDummyConsoleApp); } // wxApp initialization: this can be customized // -------------------------------------------- - if ( !wxTheApp->Initialize(argc, argv) ) + if ( !app->Initialize(argc, argv) ) { return false; } - wxCallAppCleanup callAppCleanup(wxTheApp); + wxCallAppCleanup callAppCleanup(app.get()); // for compatibility call the old initialization function too - if ( !wxTheApp->OnInitGui() ) + if ( !app->OnInitGui() ) return false; @@ -338,7 +329,7 @@ static void DoCommonPreCleanup() // cleanup done after destroying wxTheApp static void DoCommonPostCleanup() { - wxClassInfo::CleanUpClasses(); + wxClassInfo::CleanUp(); // we can't do this in wxApp itself because it doesn't know if argv had // been allocated @@ -346,6 +337,16 @@ static void DoCommonPostCleanup() FreeConvertedArgs(); #endif // wxUSE_UNICODE + // check for memory leaks +#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT + if (wxDebugContext::CountObjectsLeft(TRUE) > 0) + { + wxLogDebug(wxT("There were memory leaks.\n")); + wxDebugContext::Dump(); + wxDebugContext::PrintStatistics(); + } +#endif // Debug + #if wxUSE_LOG // and now delete the last logger as well delete wxLog::SetActiveTarget(NULL); @@ -363,22 +364,11 @@ void wxEntryCleanup() wxTheApp->CleanUp(); delete wxTheApp; - wxTheApp = NULL; + wxApp::SetInstance(NULL); } DoCommonPostCleanup(); - - // check for memory leaks -#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT - if (wxDebugContext::CountObjectsLeft(TRUE) > 0) - { - wxLogDebug(wxT("There were memory leaks.\n")); - wxDebugContext::Dump(); - wxDebugContext::PrintStatistics(); - } -#endif // Debug - } // ----------------------------------------------------------------------------