X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fd495ab3ea1282ddb8bb0cd0fb79fc758ae5fcee..211cc8dc907ee50ca6d383b8df16bba9a4d3ce2d:/src/mgl/app.cpp?ds=sidebyside diff --git a/src/mgl/app.cpp b/src/mgl/app.cpp index d9288130de..2027810bd5 100644 --- a/src/mgl/app.cpp +++ b/src/mgl/app.cpp @@ -28,6 +28,7 @@ #endif #include "wx/app.h" +#include "wx/fontutil.h" #include "wx/mgl/private.h" //----------------------------------------------------------------------------- @@ -37,8 +38,6 @@ wxApp *wxTheApp = NULL; wxAppInitializerFunction wxAppBase::m_appInitFn = (wxAppInitializerFunction) NULL; -static wxEventLoop *gs_mainEventLoop = NULL; - //----------------------------------------------------------------------------- // wxExit @@ -70,8 +69,13 @@ bool wxYield() wxLog::Suspend(); - while (gs_mainEventLoop->Pending()) - gs_mainEventLoop->Dispatch(); + if ( wxEventLoop::GetActive() ) + { + while (wxEventLoop::GetActive()->Pending()) + wxEventLoop::GetActive()->Dispatch(); + } + else + MGL_wmUpdateDC(g_winMng); // FIXME_MGL -- temporary hack, please remove /* it's necessary to call ProcessIdle() to update the frames sizes which might have been changed (it also will update other things set from @@ -124,7 +128,7 @@ BEGIN_EVENT_TABLE(wxApp, wxEvtHandler) END_EVENT_TABLE() -wxApp::wxApp() +wxApp::wxApp() : m_mainLoop(NULL) { } @@ -227,16 +231,19 @@ bool wxApp::SendIdleEvents(wxWindow* win) int wxApp::MainLoop() { int rt; - gs_mainEventLoop = new wxEventLoop; - rt = gs_mainEventLoop->Run(); - delete gs_mainEventLoop; - gs_mainEventLoop = NULL; + m_mainLoop = new wxEventLoop; + + rt = m_mainLoop->Run(); + + delete m_mainLoop; + m_mainLoop = NULL; return rt; } void wxApp::ExitMainLoop() { - gs_mainEventLoop->Exit(0); + if ( m_mainLoop ) + m_mainLoop->Exit(0); } bool wxApp::Initialized() @@ -248,12 +255,12 @@ bool wxApp::Initialized() bool wxApp::Pending() { - return gs_mainEventLoop->Pending(); + return wxEventLoop::GetActive()->Pending(); } void wxApp::Dispatch() { - gs_mainEventLoop->Dispatch(); + wxEventLoop::GetActive()->Dispatch(); } void wxApp::DeletePendingObjects() @@ -293,6 +300,9 @@ bool wxApp::Initialize() wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); wxTheColourDatabase->Initialize(); + + // Can't do this in wxModule, because fonts are needed by stock lists + wxTheFontsManager = new wxFontsManager; wxInitializeStockLists(); wxInitializeStockObjects(); @@ -358,9 +368,12 @@ void wxApp::CleanUp() wxTheColourDatabase = (wxColourDatabase*) NULL; wxDeleteStockObjects(); - wxDeleteStockLists(); + // Can't do this in wxModule, because fonts are needed by stock lists + delete wxTheFontsManager; + wxTheFontsManager = (wxFontsManager*) NULL; + delete wxTheApp; wxTheApp = (wxApp*) NULL;