From afb1aa25624909de2eeae142fa451068517b97b7 Mon Sep 17 00:00:00 2001 From: Thomas Bluemel Date: Wed, 28 Sep 2005 12:26:33 +0000 Subject: [PATCH] Fixed some memory leaks in taskmgr. Patch by Christoph_vW svn path=/trunk/; revision=18133 --- reactos/subsys/system/taskmgr/graphctl.c | 18 ++++++++---------- reactos/subsys/system/taskmgr/graphctl.h | 1 + reactos/subsys/system/taskmgr/perfpage.c | 4 ++++ 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/reactos/subsys/system/taskmgr/graphctl.c b/reactos/subsys/system/taskmgr/graphctl.c index 90c883927b6..aaa7c2ab67e 100644 --- a/reactos/subsys/system/taskmgr/graphctl.c +++ b/reactos/subsys/system/taskmgr/graphctl.c @@ -99,20 +99,18 @@ static void GraphCtrl_Init(TGraphCtrl* this) this->m_bitmapOldPlot = NULL; } -#if 0 -TGraphCtrl::~TGraphCtrl() +void GraphCtrl_Dispose(TGraphCtrl* this) { /* just to be picky restore the bitmaps for the two memory dc's */ /* (these dc's are being destroyed so there shouldn't be any leaks) */ - if (m_bitmapOldGrid != NULL) SelectObject(m_dcGrid, m_bitmapOldGrid); - if (m_bitmapOldPlot != NULL) SelectObject(m_dcPlot, m_bitmapOldPlot); - if (m_bitmapGrid != NULL) DeleteObject(m_bitmapGrid); - if (m_bitmapPlot != NULL) DeleteObject(m_bitmapPlot); - if (m_dcGrid != NULL) DeleteDC(m_dcGrid); - if (m_dcPlot != NULL) DeleteDC(m_dcPlot); - if (m_brushBack != NULL) DeleteObject(m_brushBack); + if (this->m_bitmapOldGrid != NULL) SelectObject(this->m_dcGrid, this->m_bitmapOldGrid); + if (this->m_bitmapOldPlot != NULL) SelectObject(this->m_dcPlot, this->m_bitmapOldPlot); + if (this->m_bitmapGrid != NULL) DeleteObject(this->m_bitmapGrid); + if (this->m_bitmapPlot != NULL) DeleteObject(this->m_bitmapPlot); + if (this->m_dcGrid != NULL) DeleteDC(this->m_dcGrid); + if (this->m_dcPlot != NULL) DeleteDC(this->m_dcPlot); + if (this->m_brushBack != NULL) DeleteObject(this->m_brushBack); } -#endif BOOL GraphCtrl_Create(TGraphCtrl* this, HWND hWnd, HWND hParentWnd, UINT nID) { diff --git a/reactos/subsys/system/taskmgr/graphctl.h b/reactos/subsys/system/taskmgr/graphctl.h index 265d5b98bf0..83790565ec0 100644 --- a/reactos/subsys/system/taskmgr/graphctl.h +++ b/reactos/subsys/system/taskmgr/graphctl.h @@ -91,6 +91,7 @@ double GraphCtrl_AppendPoint(TGraphCtrl* this, double dNewPoint2, double dNewPoint3); BOOL GraphCtrl_Create(TGraphCtrl* this, HWND hWnd, HWND hParentWnd, UINT nID); +void GraphCtrl_Dispose(TGraphCtrl* this); void GraphCtrl_DrawPoint(TGraphCtrl* this); void GraphCtrl_InvalidateCtrl(TGraphCtrl* this); void GraphCtrl_Paint(TGraphCtrl* this, HWND hWnd, HDC dc); diff --git a/reactos/subsys/system/taskmgr/perfpage.c b/reactos/subsys/system/taskmgr/perfpage.c index b2bea988dcc..8b5c03118a4 100644 --- a/reactos/subsys/system/taskmgr/perfpage.c +++ b/reactos/subsys/system/taskmgr/perfpage.c @@ -115,6 +115,10 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) /* PAINTSTRUCT ps; */ switch (message) { + case WM_DESTROY: + GraphCtrl_Dispose(&PerformancePageCpuUsageHistoryGraph); + GraphCtrl_Dispose(&PerformancePageMemUsageHistoryGraph); + case WM_INITDIALOG: /* Save the width and height */