X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/52cbfcf009d9f2ac995280bd6f5dcf584295b67d..885ee23543a6264c0ffd904aec4bc6d78a249517:/src/common/gdicmn.cpp diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp index e343293045..4bb0019e0d 100644 --- a/src/common/gdicmn.cpp +++ b/src/common/gdicmn.cpp @@ -20,6 +20,7 @@ #pragma hdrstop #endif + #include "wx/gdicmn.h" #include "wx/brush.h" #include "wx/pen.h" @@ -29,6 +30,7 @@ #include "wx/font.h" #include "wx/palette.h" +#include "wx/log.h" #include #ifdef __WXMSW__ @@ -269,7 +271,7 @@ wxColour *wxColourDatabase::FindColour(const wxString& colour) if (!(col->Ok())) { delete col; - return NULL; + return (wxColour *) NULL; } Append( colour, col ); return col; @@ -437,31 +439,35 @@ wxBitmapList::wxBitmapList () wxBitmapList::~wxBitmapList () { - printf( "Count: %d.\n", Number() ); + wxLogDebug("~wxBitmapList: count = %d", Number()); +#ifdef __WXMSW__ wxNode *node = First (); while (node) { wxBitmap *bitmap = (wxBitmap *) node->Data (); wxNode *next = node->Next (); - delete bitmap; -// bitmap->FreeResource(TRUE); + if (bitmap->GetVisible()) + delete bitmap; node = next; } +#endif } // Pen and Brush lists wxPenList::~wxPenList () { +#ifdef __WXMSW__ wxNode *node = First (); while (node) { wxPen *pen = (wxPen *) node->Data (); wxNode *next = node->Next (); - delete pen; -// pen->FreeResource(TRUE); + if (pen->GetVisible()) + delete pen; node = next; } +#endif } void wxPenList::AddPen (wxPen * pen) @@ -503,19 +509,22 @@ wxPen *wxPenList::FindOrCreatePen (const wxString& colour, int width, int style) if (the_colour) return FindOrCreatePen (*the_colour, width, style); else - return NULL; + return (wxPen *) NULL; } wxBrushList::~wxBrushList () { +#ifdef __WXMSW__ wxNode *node = First (); while (node) { wxBrush *brush = (wxBrush *) node->Data (); wxNode *next = node->Next (); - delete brush; + if (brush->GetVisible()) + delete brush; node = next; } +#endif } void wxBrushList::AddBrush (wxBrush * brush) @@ -550,7 +559,7 @@ wxBrush *wxBrushList::FindOrCreateBrush (const wxString& colour, int style) if (the_colour) return FindOrCreateBrush (*the_colour, style); else - return NULL; + return (wxBrush *) NULL; } void wxBrushList::RemoveBrush (wxBrush * brush) @@ -564,21 +573,16 @@ wxFontList::~wxFontList () wxNode *node = First (); while (node) { -/* + // Only delete objects that are 'visible', i.e. + // that have been created using FindOrCreate..., + // where the pointers are expected to be shared + // (and therefore not deleted by any one part of an app). wxFont *font = (wxFont *) node->Data (); wxNode *next = node->Next (); - delete font; + if (font->GetVisible()) + delete font; node = next; -*/ - // New for 2.0: don't delete the font (it may be a member - // of a wxDC, for example) - wxFont *font = (wxFont *) node->Data (); - wxNode *next = node->Next (); - - // Force the font to be deleted - font->FreeResource(TRUE); - node = next; - } +} #endif }