Defer deletion of wxFontsManager and MGL_exit until after the modules have been cleaned up
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35032 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
b468fab240
commit
bfb8eb7eae
@ -21,7 +21,6 @@
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/settings.h"
|
||||
#include "wx/module.h"
|
||||
#include "wx/frame.h"
|
||||
#include "wx/dialog.h"
|
||||
#include "wx/log.h"
|
||||
@ -30,6 +29,7 @@
|
||||
|
||||
#include "wx/app.h"
|
||||
#include "wx/evtloop.h"
|
||||
#include "wx/module.h"
|
||||
#include "wx/fontutil.h"
|
||||
#include "wx/univ/theme.h"
|
||||
#include "wx/univ/renderer.h"
|
||||
@ -306,17 +306,31 @@ bool wxApp::Initialize(int& argc, wxChar **argv)
|
||||
return true;
|
||||
}
|
||||
|
||||
// Modules are cleaned up after wxApp::CleanUp(), and some modules may
|
||||
// require MGL to still be alive, e.g. the stock fonts need the fonts
|
||||
// manager. So append this module last minute in wxApp::CleanUp() to close
|
||||
// down MGL after all the other modules have been cleaned up.
|
||||
//
|
||||
struct wxMGLFinalCleanup: public wxModule
|
||||
{
|
||||
bool OnInit() { return true; }
|
||||
|
||||
void OnExit()
|
||||
{
|
||||
delete wxTheFontsManager;
|
||||
wxTheFontsManager = (wxFontsManager*) NULL;
|
||||
|
||||
wxDestroyMGL_WM();
|
||||
MGL_exit();
|
||||
}
|
||||
};
|
||||
|
||||
void wxApp::CleanUp()
|
||||
{
|
||||
delete gs_rootWindow;
|
||||
|
||||
wxAppBase::CleanUp();
|
||||
|
||||
// must do this after calling base class CleanUp()
|
||||
delete wxTheFontsManager;
|
||||
wxTheFontsManager = (wxFontsManager*) NULL;
|
||||
|
||||
wxDestroyMGL_WM();
|
||||
MGL_exit();
|
||||
wxModule::RegisterModule(new wxMGLFinalCleanup);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user