X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1f0299c17dc878540bf190c290392db241b425ad..44a6c8e61808e6197bc78e2344c2e93853943350:/src/gtk1/app.cpp diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index 9cfd6f2253..74f5e13cee 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -18,6 +18,9 @@ #include "wx/postscrp.h" #include "wx/intl.h" #include "wx/log.h" +#include "wx/memory.h" +#include "wx/font.h" +#include "wx/settings.h" #include "unistd.h" @@ -33,6 +36,7 @@ wxApp *wxTheApp = NULL; wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; extern wxList wxPendingDelete; +extern wxResourceCache *wxTheResourceCache; //----------------------------------------------------------------------------- // local functions @@ -241,9 +245,16 @@ void wxApp::CommonInit(void) (void) wxGetResource("wxWindows", "OsVersion", &wxOsVersion); #endif */ + wxSystemSettings::Init(); + wxTheResourceCache = new wxResourceCache(wxKEY_STRING); + + wxTheFontNameDirectory = new wxFontNameDirectory; + wxTheFontNameDirectory->Initialize(); wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); wxTheColourDatabase->Initialize(); + + wxInitializeStockLists(); wxInitializeStockObjects(); // For PostScript printing @@ -260,14 +271,24 @@ void wxApp::CommonInit(void) g_globalCursor = new wxCursor; */ - wxInitializeStockObjects(); +// wxInitializeStockObjects(); }; void wxApp::CommonCleanUp(void) { + wxDELETE(wxTheColourDatabase); + wxDELETE(wxThePrintPaperDatabase); + wxDELETE(wxThePrintSetupData); + wxDELETE(wxTheFontNameDirectory); wxDeleteStockObjects(); wxFlushResources(); + + wxDELETE(wxTheResourceCache); + + wxDeleteStockLists(); + + wxSystemSettings::Done(); }; wxLog *wxApp::CreateLogTarget() @@ -285,6 +306,18 @@ int wxEntry( int argc, char *argv[] ) wxClassInfo::InitializeClasses(); +#if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT + +#if !defined(_WINDLL) + streambuf* sBuf = new wxDebugStreamBuf; +#else + streambuf* sBuf = NULL; +#endif + ostream* oStr = new ostream(sBuf) ; + wxDebugContext::SetStream(oStr, sBuf); + +#endif + if (!wxTheApp) { if (!wxApp::GetInitializerFunction()) @@ -298,8 +331,6 @@ int wxEntry( int argc, char *argv[] ) wxObject *test_app = app_ini(); wxTheApp = (wxApp*) test_app; - -// wxTheApp = (wxApp*)( app_ini() ); }; if (!wxTheApp) @@ -308,8 +339,6 @@ int wxEntry( int argc, char *argv[] ) return 0; }; -// printf( "Programmstart.\n" ); - wxTheApp->argc = argc; wxTheApp->argv = argv; @@ -346,6 +375,22 @@ int wxEntry( int argc, char *argv[] ) wxTheApp->OnExit(); wxApp::CommonCleanUp(); + + wxDELETE(wxTheApp); + +#if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT + // At this point we want to check if there are any memory + // blocks that aren't part of the wxDebugContext itself, + // as a special case. Then when dumping we need to ignore + // wxDebugContext, too. + if (wxDebugContext::CountObjectsLeft() > 0) + { + wxTrace("There were memory leaks.\n"); + wxDebugContext::Dump(); + wxDebugContext::PrintStatistics(); + } + wxDebugContext::SetStream(NULL, NULL); +#endif return retValue; };