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:
Vadim Zeitlin 2007-09-19 01:02:16 +00:00
parent b701f995b1
commit 385addaf21

View File

@ -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