]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/graphics.cpp
added disambiguation for Clear() too
[wxWidgets.git] / src / msw / graphics.cpp
index bda43979a70c9a988ce2a67aa3fb38c376a42693..a637adf8c4b0d6627ab73cc037b3d7dc175a912a 100644 (file)
@@ -668,7 +668,7 @@ void wxGDIPlusPathData::GetCurrentPoint( wxDouble* x, wxDouble* y) const
 void wxGDIPlusPathData::AddArc( wxDouble x, wxDouble y, wxDouble r, double startAngle, double endAngle, bool clockwise )
 {
     double sweepAngle = endAngle - startAngle ;
-    if( abs(sweepAngle) >= 2*M_PI)
+    if( fabs(sweepAngle) >= 2*M_PI)
     {
         sweepAngle = 2 * M_PI;
     }
@@ -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