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 EnsureIsLoaded();
|
||||||
void Load();
|
void Load();
|
||||||
void Unload();
|
void Unload();
|
||||||
|
friend class wxGDIPlusRendererModule;
|
||||||
|
|
||||||
private :
|
private :
|
||||||
bool m_loaded;
|
bool m_loaded;
|
||||||
@ -1326,7 +1327,11 @@ void wxGDIPlusRenderer::Load()
|
|||||||
void wxGDIPlusRenderer::Unload()
|
void wxGDIPlusRenderer::Unload()
|
||||||
{
|
{
|
||||||
if ( m_gditoken )
|
if ( m_gditoken )
|
||||||
|
{
|
||||||
GdiplusShutdown(m_gditoken);
|
GdiplusShutdown(m_gditoken);
|
||||||
|
m_gditoken = NULL;
|
||||||
|
}
|
||||||
|
m_loaded = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxWindowDC& dc)
|
wxGraphicsContext * wxGDIPlusRenderer::CreateContext( const wxWindowDC& dc)
|
||||||
@ -1458,4 +1463,17 @@ wxGraphicsFont wxGDIPlusRenderer::CreateFont( const wxFont &font , const wxColou
|
|||||||
return wxNullGraphicsFont;
|
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
|
#endif // wxUSE_GRAPHICS_CONTEXT
|
||||||
|
Loading…
Reference in New Issue
Block a user