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 */