destroy any TLWs still alive when the app terminates (avoids problems with classes unregistering under MSW and memory leaks everywhere)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2004-10-03 12:11:19 +00:00
parent 2a3476f24d
commit 0746037046

View File

@@ -128,9 +128,19 @@ wxAppBase::~wxAppBase()
void wxAppBase::CleanUp() void wxAppBase::CleanUp()
{ {
// one last chance for pending objects to be cleaned up // clean up all the pending objects
DeletePendingObjects(); DeletePendingObjects();
// and any remaining TLWs (they remove themselves from wxTopLevelWindows
// when destroyed, so iterate until none are left)
while ( !wxTopLevelWindows.empty() )
{
// do not use Destroy() here as it only puts the TLW in pending list
// but we want to delete them now
delete wxTopLevelWindows.GetFirst()->GetData();
}
// undo everything we did in Initialize() above
wxBitmap::CleanUpHandlers(); wxBitmap::CleanUpHandlers();
wxDeleteStockObjects(); wxDeleteStockObjects();