From f2498c4e33114b17dd0f071b35b48dbaec6d1c2e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 30 Nov 2007 21:11:00 +0000 Subject: [PATCH] free wxDCFactory::m_factory; also renamed SetDCFactory() to just Set() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50387 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/dc.h | 2 +- src/common/dcbase.cpp | 50 +++++++++++++++++++++++++++---------------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/include/wx/dc.h b/include/wx/dc.h index 1cd67be835..90e878d4b1 100644 --- a/include/wx/dc.h +++ b/include/wx/dc.h @@ -129,7 +129,7 @@ public: virtual wxDCImpl* CreatePrinterDC( wxPrinterDC *owner, const wxPrintData &data ) = 0; #endif - static void SetDCFactory( wxDCFactory *factory ); + static void Set(wxDCFactory *factory); static wxDCFactory *Get(); private: diff --git a/src/common/dcbase.cpp b/src/common/dcbase.cpp index 5e11a81ee5..0989ecc110 100644 --- a/src/common/dcbase.cpp +++ b/src/common/dcbase.cpp @@ -33,30 +33,31 @@ #ifndef WX_PRECOMP #include "wx/math.h" + #include "wx/module.h" #endif #ifdef __WXMSW__ -#include "wx/msw/dcclient.h" -#include "wx/msw/dcmemory.h" -#include "wx/msw/dcscreen.h" + #include "wx/msw/dcclient.h" + #include "wx/msw/dcmemory.h" + #include "wx/msw/dcscreen.h" #endif #ifdef __WXGTK__ -#include "wx/gtk/dcclient.h" -#include "wx/gtk/dcmemory.h" -#include "wx/gtk/dcscreen.h" + #include "wx/gtk/dcclient.h" + #include "wx/gtk/dcmemory.h" + #include "wx/gtk/dcscreen.h" #endif #ifdef __WXMAC__ -#include "wx/mac/dcclient.h" -#include "wx/mac/dcmemory.h" -#include "wx/mac/dcscreen.h" + #include "wx/mac/dcclient.h" + #include "wx/mac/dcmemory.h" + #include "wx/mac/dcscreen.h" #endif #ifdef __WXX11__ -#include "wx/x11/dcclient.h" -#include "wx/x11/dcmemory.h" -#include "wx/x11/dcscreen.h" + #include "wx/x11/dcclient.h" + #include "wx/x11/dcmemory.h" + #include "wx/x11/dcscreen.h" #endif //---------------------------------------------------------------------------- @@ -65,22 +66,33 @@ wxDCFactory *wxDCFactory::m_factory = NULL; -void wxDCFactory::SetDCFactory( wxDCFactory *factory ) +void wxDCFactory::Set(wxDCFactory *factory) { - if (wxDCFactory::m_factory) - delete wxDCFactory::m_factory; + delete m_factory; - wxDCFactory::m_factory = factory; + m_factory = factory; } wxDCFactory *wxDCFactory::Get() { - if (!wxDCFactory::m_factory) - wxDCFactory::m_factory = new wxNativeDCFactory; + if ( !m_factory ) + m_factory = new wxNativeDCFactory; - return wxDCFactory::m_factory; + return m_factory; } +class wxDCFactoryCleanupModule : public wxModule +{ +public: + virtual bool OnInit() { return true; } + virtual void OnExit() { wxDCFactory::Set(NULL); } + +private: + DECLARE_DYNAMIC_CLASS(wxDCFactoryCleanupModule) +}; + +IMPLEMENT_DYNAMIC_CLASS(wxDCFactoryCleanupModule, wxModule) + //----------------------------------------------------------------------------- // wxNativeDCFactory //-----------------------------------------------------------------------------