shut down GDI+ from a module instead of doing it during static object destruction time when it may be too late (patch 1792915)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48778 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
b701f995b1
commit
385addaf21
@ -1286,6 +1286,7 @@ protected :
|
||||
void EnsureIsLoaded();
|
||||
void Load();
|
||||
void Unload();
|
||||
friend class wxGDIPlusRendererModule;
|
||||
|
||||
private :
|
||||
bool m_loaded;
|
||||
@ -1326,7 +1327,11 @@ void wxGDIPlusRenderer::Load()
|
||||
void wxGDIPlusRenderer::Unload()
|
||||
{
|
||||
if ( m_gditoken )
|
||||
{
|
||||
GdiplusShutdown(m_gditoken);
|
||||
m_gditoken = NULL;
|
||||
}
|
||||
m_loaded = false;
|
||||
}
|
||||
|
||||
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxWindowDC& dc)
|
||||
@ -1458,4 +1463,17 @@ wxGraphicsFont wxGDIPlusRenderer::CreateFont( const wxFont &font , const wxColou
|
||||
return wxNullGraphicsFont;
|
||||
}
|
||||
|
||||
// Shutdown GDI+ at app exit, before possible dll unload
|
||||
class wxGDIPlusRendererModule : public wxModule
|
||||
{
|
||||
public:
|
||||
virtual bool OnInit() { return true; }
|
||||
virtual void OnExit() { gs_GDIPlusRenderer.Unload(); }
|
||||
|
||||
private:
|
||||
DECLARE_DYNAMIC_CLASS(wxGDIPlusRendererModule)
|
||||
};
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxGDIPlusRendererModule, wxModule)
|
||||
|
||||
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||
|
Loading…
Reference in New Issue
Block a user