fixed most of the memory leaks
authorChristoph von Wittich <christoph_vw@reactos.org>
Mon, 8 Jan 2007 02:40:38 +0000 (02:40 +0000)
committerChristoph von Wittich <christoph_vw@reactos.org>
Mon, 8 Jan 2007 02:40:38 +0000 (02:40 +0000)
svn path=/trunk/; revision=25363

13 files changed:
reactos/base/applications/taskmgr/applpage.c
reactos/base/applications/taskmgr/column.c
reactos/base/applications/taskmgr/graph.c
reactos/base/applications/taskmgr/graph.h
reactos/base/applications/taskmgr/graphctl.c
reactos/base/applications/taskmgr/graphctl.h
reactos/base/applications/taskmgr/perfdata.c
reactos/base/applications/taskmgr/perfpage.c
reactos/base/applications/taskmgr/proclist.c
reactos/base/applications/taskmgr/procpage.c
reactos/base/applications/taskmgr/taskmgr.c
reactos/base/applications/taskmgr/taskmgr.h
reactos/base/applications/taskmgr/trayicon.c

index 259bfe5..5826f9c 100644 (file)
@@ -66,6 +66,7 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
     LV_COLUMN   column;
     TCHAR       szTemp[256];
     int         cx, cy;
+    HANDLE      hRefreshThread = NULL;
 
     switch (message) {
     case WM_INITDIALOG:
@@ -105,7 +106,7 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
         UpdateApplicationListControlViewSetting();
 
         /* Start our refresh thread */
-        CreateThread(NULL, 0, ApplicationPageRefreshThread, NULL, 0, NULL);
+        hRefreshThread = CreateThread(NULL, 0, ApplicationPageRefreshThread, NULL, 0, NULL);
 
         return TRUE;
 
@@ -113,6 +114,7 @@ ApplicationPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
         /* Close the event handle, this will make the */
         /* refresh thread exit when the wait fails */
         CloseHandle(hApplicationPageEvent);
+        CloseHandle(hRefreshThread);
         break;
 
     case WM_COMMAND:
@@ -283,8 +285,8 @@ BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)
 
     if (!hIcon)
     {
-        hIcon = (HICON)GetClassLong(hWnd, bLargeIcon ? GCL_HICON : GCL_HICONSM);
-        if (!hIcon) hIcon = (HICON)GetClassLong(hWnd, bLargeIcon ? GCL_HICONSM : GCL_HICON);
+        hIcon = (HICON)(LONG_PTR)GetClassLongPtr(hWnd, bLargeIcon ? GCL_HICON : GCL_HICONSM);
+        if (!hIcon) hIcon = (HICON)(LONG_PTR)GetClassLongPtr(hWnd, bLargeIcon ? GCL_HICONSM : GCL_HICON);
         if (!hIcon) SendMessageTimeout(hWnd, WM_QUERYDRAGICON, 0, 0, 0, 1000, (PDWORD_PTR)xhIcon);
         if (!hIcon) SendMessageTimeout(hWnd, WM_GETICON, bLargeIcon ? ICON_SMALL /*0*/ : ICON_BIG /*1*/, 0, 0, 1000, (PDWORD_PTR)xhIcon);
     }
index ab41229..57a841f 100644 (file)
@@ -31,7 +31,7 @@ INT_PTR CALLBACK    ColumnsDialogWndProc(HWND hDlg, UINT message, WPARAM wParam,
 
 void AddColumns(void)
 {
-    int        size;
+    LRESULT        size;
 
     if (TaskManagerSettings.Column_ImageName) {
         LoadString(hInst, IDS_TAB_IMAGENAME, szTemp, 256);
@@ -188,7 +188,7 @@ void SaveColumnSettings(void)
     HDITEM    hditem;
     int        i;
     TCHAR    text[260];
-    int        size;
+    LRESULT        size;
 
     /* Reset column data */
     for (i=0; i<25; i++)
@@ -551,31 +551,31 @@ ColumnsDialogWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
 
         if (LOWORD(wParam) == IDOK)
         {
-            TaskManagerSettings.Column_ImageName = SendMessage(GetDlgItem(hDlg, IDC_IMAGENAME), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_PID = SendMessage(GetDlgItem(hDlg, IDC_PID), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_UserName = SendMessage(GetDlgItem(hDlg, IDC_USERNAME), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_SessionID = SendMessage(GetDlgItem(hDlg, IDC_SESSIONID), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_CPUUsage = SendMessage(GetDlgItem(hDlg, IDC_CPUUSAGE), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_CPUTime = SendMessage(GetDlgItem(hDlg, IDC_CPUTIME), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_MemoryUsage = SendMessage(GetDlgItem(hDlg, IDC_MEMORYUSAGE), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_PeakMemoryUsage = SendMessage(GetDlgItem(hDlg, IDC_PEAKMEMORYUSAGE), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_MemoryUsageDelta = SendMessage(GetDlgItem(hDlg, IDC_MEMORYUSAGEDELTA), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_PageFaults = SendMessage(GetDlgItem(hDlg, IDC_PAGEFAULTS), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_PageFaultsDelta = SendMessage(GetDlgItem(hDlg, IDC_PAGEFAULTSDELTA), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_VirtualMemorySize = SendMessage(GetDlgItem(hDlg, IDC_VIRTUALMEMORYSIZE), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_PagedPool = SendMessage(GetDlgItem(hDlg, IDC_PAGEDPOOL), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_NonPagedPool = SendMessage(GetDlgItem(hDlg, IDC_NONPAGEDPOOL), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_BasePriority = SendMessage(GetDlgItem(hDlg, IDC_BASEPRIORITY), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_HandleCount = SendMessage(GetDlgItem(hDlg, IDC_HANDLECOUNT), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_ThreadCount = SendMessage(GetDlgItem(hDlg, IDC_THREADCOUNT), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_USERObjects = SendMessage(GetDlgItem(hDlg, IDC_USEROBJECTS), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_GDIObjects = SendMessage(GetDlgItem(hDlg, IDC_GDIOBJECTS), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_IOReads = SendMessage(GetDlgItem(hDlg, IDC_IOREADS), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_IOWrites = SendMessage(GetDlgItem(hDlg, IDC_IOWRITES), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_IOOther = SendMessage(GetDlgItem(hDlg, IDC_IOOTHER), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_IOReadBytes = SendMessage(GetDlgItem(hDlg, IDC_IOREADBYTES), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_IOWriteBytes = SendMessage(GetDlgItem(hDlg, IDC_IOWRITEBYTES), BM_GETCHECK, 0, 0);
-            TaskManagerSettings.Column_IOOtherBytes = SendMessage(GetDlgItem(hDlg, IDC_IOOTHERBYTES), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_ImageName = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_IMAGENAME), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_PID = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_PID), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_UserName = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_USERNAME), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_SessionID = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_SESSIONID), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_CPUUsage = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_CPUUSAGE), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_CPUTime = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_CPUTIME), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_MemoryUsage = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_MEMORYUSAGE), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_PeakMemoryUsage = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_PEAKMEMORYUSAGE), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_MemoryUsageDelta = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_MEMORYUSAGEDELTA), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_PageFaults = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_PAGEFAULTS), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_PageFaultsDelta = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_PAGEFAULTSDELTA), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_VirtualMemorySize = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_VIRTUALMEMORYSIZE), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_PagedPool = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_PAGEDPOOL), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_NonPagedPool = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_NONPAGEDPOOL), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_BasePriority = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_BASEPRIORITY), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_HandleCount = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_HANDLECOUNT), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_ThreadCount = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_THREADCOUNT), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_USERObjects = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_USEROBJECTS), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_GDIObjects = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_GDIOBJECTS), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_IOReads = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_IOREADS), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_IOWrites = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_IOWRITES), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_IOOther = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_IOOTHER), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_IOReadBytes = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_IOREADBYTES), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_IOWriteBytes = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_IOWRITEBYTES), BM_GETCHECK, 0, 0);
+            TaskManagerSettings.Column_IOOtherBytes = (BOOL) SendMessage(GetDlgItem(hDlg, IDC_IOOTHERBYTES), BM_GETCHECK, 0, 0);
 
             EndDialog(hDlg, LOWORD(wParam));
             return TRUE;
index 7b07368..6ab48d5 100644 (file)
@@ -24,7 +24,7 @@
 
 int                nlastBarsUsed = 0;
 
-LONG                OldGraphWndProc;
+WNDPROC                OldGraphWndProc;
 
 void                Graph_DrawCpuUsageGraph(HDC hDC, HWND hWnd);
 void                Graph_DrawMemUsageGraph(HDC hDC, HWND hWnd);
@@ -162,7 +162,7 @@ void Graph_DrawCpuUsageGraph(HDC hDC, HWND hWnd)
      * Get the CPU usage
      */
     CpuUsage = PerfDataGetProcessorUsage();
-    if (CpuUsage < 0)         CpuUsage = 0;
+    if (CpuUsage <= 0)         CpuUsage = 0;
     if (CpuUsage > 100)       CpuUsage = 100;
 
     _stprintf(Text, _T("%d%%"), (int)CpuUsage);
@@ -190,9 +190,9 @@ void Graph_DrawCpuUsageGraph(HDC hDC, HWND hWnd)
     
     if (TaskManagerSettings.ShowKernelTimes)
     {
-           CpuKernelUsage = PerfDataGetProcessorSystemUsage();
-           if (CpuKernelUsage < 0)   CpuKernelUsage = 0;
-           if (CpuKernelUsage > 100) CpuKernelUsage = 100;
+        CpuKernelUsage = PerfDataGetProcessorSystemUsage();
+        if (CpuKernelUsage <= 0)   CpuKernelUsage = 0;
+        if (CpuKernelUsage >= 100) CpuKernelUsage = 100;
         nBarsUsedKernel = (nBars * CpuKernelUsage) / 100;
     }
     else
index 69b668a..f18f540 100644 (file)
@@ -30,10 +30,10 @@ extern "C" {
 
 #define BRIGHT_GREEN   RGB(0, 255, 0)
 #define MEDIUM_GREEN   RGB(0, 190, 0)
-#define DARK_GREEN             RGB(0, 130, 0)
-#define RED                            RGB(255, 0, 0)
+#define DARK_GREEN     RGB(0, 130, 0)
+#define RED            RGB(255, 0, 0)
 
-extern LONG                            OldGraphWndProc;
+extern WNDPROC         OldGraphWndProc;
 
 INT_PTR CALLBACK       Graph_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
 
index fbe2910..fbf1caa 100644 (file)
@@ -22,7 +22,7 @@
 
 #include <precomp.h>
 
-LONG OldGraphCtrlWndProc;
+WNDPROC OldGraphCtrlWndProc;
 
 static void GraphCtrl_Init(TGraphCtrl* this)
 {
@@ -101,8 +101,14 @@ static void GraphCtrl_Init(TGraphCtrl* this)
 
 void GraphCtrl_Dispose(TGraphCtrl* this)
 {
+    int plot;
+
+    for (plot = 0; plot < MAX_PLOTS; plot++)
+        DeleteObject(this->m_penPlot[plot]);
+
     /*  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 (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);
@@ -209,6 +215,7 @@ void GraphCtrl_InvalidateCtrl(TGraphCtrl* this, BOOL bResize)
         // so create a new bitmap of the appropriate size
         if(this->m_bitmapGrid != NULL)
         {
+            this->m_bitmapGrid = (HBITMAP)SelectObject(this->m_dcGrid, this->m_bitmapOldGrid);
             DeleteObject(this->m_bitmapGrid);
             this->m_bitmapGrid = CreateCompatibleBitmap(dc, this->m_nClientWidth, this->m_nClientHeight);
             SelectObject(this->m_dcGrid, this->m_bitmapGrid);
@@ -341,6 +348,7 @@ void GraphCtrl_InvalidateCtrl(TGraphCtrl* this, BOOL bResize)
         // so create a new bitmap of the appropriate size
         if(this->m_bitmapPlot != NULL)
         {
+            this->m_bitmapPlot = (HBITMAP)SelectObject(this->m_dcPlot, this->m_bitmapOldPlot);
             DeleteObject(this->m_bitmapPlot);
             this->m_bitmapPlot = CreateCompatibleBitmap(dc, this->m_nClientWidth, this->m_nClientHeight);
             SelectObject(this->m_dcPlot, this->m_bitmapPlot);
index 2a83e9d..f8f0718 100644 (file)
@@ -85,7 +85,7 @@ typedef struct
   RECT     m_rectPlot;
 } TGraphCtrl;
 
-extern LONG OldGraphCtrlWndProc;
+extern WNDPROC OldGraphCtrlWndProc;
 double  GraphCtrl_AppendPoint(TGraphCtrl* this,
                               double dNewPoint0, double dNewPoint1,
                               double dNewPoint2, double dNewPoint3);
index 9becdcf..5805ec4 100644 (file)
@@ -63,6 +63,10 @@ BOOL PerfDataInitialize(void)
 
 void PerfDataUninitialize(void)
 {
+
+    if (pPerfData != NULL)
+        HeapFree(GetProcessHeap(), 0, pPerfData);
+
     DeleteCriticalSection(&PerfDataCriticalSection);
 
     if (SystemUserSid != NULL)
@@ -121,8 +125,13 @@ void PerfDataRefresh(void)
     /* Get processor time information */
     SysProcessorTimeInfo = (PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)HeapAlloc(GetProcessHeap(), 0, sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION) * SystemBasicInfo.NumberOfProcessors);
     status = NtQuerySystemInformation(SystemProcessorPerformanceInformation, SysProcessorTimeInfo, sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION) * SystemBasicInfo.NumberOfProcessors, &ulSize);
+
     if (status != NO_ERROR)
+    {
+        if (SysProcessorTimeInfo != NULL)
+            HeapFree(GetProcessHeap(), 0, SysProcessorTimeInfo);
         return;
+    }
 
     /* Get handle information
      * We don't know how much data there is so just keep
index 0c54b83..f18c6db 100644 (file)
@@ -110,58 +110,63 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
        RECT    rc;
        int             nXDifference;
        int             nYDifference;
-
+#ifdef RUN_PERF_PAGE
+       HANDLE  hRefreshThread = NULL;
+#endif
 /*     HDC hdc; */
 /*     PAINTSTRUCT ps; */
 
     switch (message) {
-       case WM_DESTROY:
-               GraphCtrl_Dispose(&PerformancePageCpuUsageHistoryGraph);
-               GraphCtrl_Dispose(&PerformancePageMemUsageHistoryGraph);
-               break;
+    case WM_DESTROY:
+        GraphCtrl_Dispose(&PerformancePageCpuUsageHistoryGraph);
+        GraphCtrl_Dispose(&PerformancePageMemUsageHistoryGraph);
+#ifdef RUN_PERF_PAGE
+               CloseHandle(hRefreshThread);
+#endif
+        break;
+
+    case WM_INITDIALOG:
 
-       case WM_INITDIALOG:
-
-               /*  Save the width and height */
-               GetClientRect(hDlg, &rc);
-               nPerformancePageWidth = rc.right;
-               nPerformancePageHeight = rc.bottom;
-
-               /*  Update window position */
-               SetWindowPos(hDlg, NULL, 15, 30, 0, 0, SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER);
-
-               /*
-                *  Get handles to all the controls
-                */
-               hPerformancePageTotalsFrame = GetDlgItem(hDlg, IDC_TOTALS_FRAME);
-               hPerformancePageCommitChargeFrame = GetDlgItem(hDlg, IDC_COMMIT_CHARGE_FRAME);
-               hPerformancePageKernelMemoryFrame = GetDlgItem(hDlg, IDC_KERNEL_MEMORY_FRAME);
-               hPerformancePagePhysicalMemoryFrame = GetDlgItem(hDlg, IDC_PHYSICAL_MEMORY_FRAME);
-
-               hPerformancePageCpuUsageFrame = GetDlgItem(hDlg, IDC_CPU_USAGE_FRAME);
-               hPerformancePageMemUsageFrame = GetDlgItem(hDlg, IDC_MEM_USAGE_FRAME);
-               hPerformancePageCpuUsageHistoryFrame = GetDlgItem(hDlg, IDC_CPU_USAGE_HISTORY_FRAME);
-               hPerformancePageMemUsageHistoryFrame = GetDlgItem(hDlg, IDC_MEMORY_USAGE_HISTORY_FRAME);
-
-               hPerformancePageCommitChargeTotalEdit = GetDlgItem(hDlg, IDC_COMMIT_CHARGE_TOTAL);
-               hPerformancePageCommitChargeLimitEdit = GetDlgItem(hDlg, IDC_COMMIT_CHARGE_LIMIT);
-               hPerformancePageCommitChargePeakEdit = GetDlgItem(hDlg, IDC_COMMIT_CHARGE_PEAK);
-               hPerformancePageKernelMemoryTotalEdit = GetDlgItem(hDlg, IDC_KERNEL_MEMORY_TOTAL);
-               hPerformancePageKernelMemoryPagedEdit = GetDlgItem(hDlg, IDC_KERNEL_MEMORY_PAGED);
-               hPerformancePageKernelMemoryNonPagedEdit = GetDlgItem(hDlg, IDC_KERNEL_MEMORY_NONPAGED);
-               hPerformancePagePhysicalMemoryTotalEdit = GetDlgItem(hDlg, IDC_PHYSICAL_MEMORY_TOTAL);
-               hPerformancePagePhysicalMemoryAvailableEdit = GetDlgItem(hDlg, IDC_PHYSICAL_MEMORY_AVAILABLE);
-               hPerformancePagePhysicalMemorySystemCacheEdit = GetDlgItem(hDlg, IDC_PHYSICAL_MEMORY_SYSTEM_CACHE);
-               hPerformancePageTotalsHandleCountEdit = GetDlgItem(hDlg, IDC_TOTALS_HANDLE_COUNT);
-               hPerformancePageTotalsProcessCountEdit = GetDlgItem(hDlg, IDC_TOTALS_PROCESS_COUNT);
-               hPerformancePageTotalsThreadCountEdit = GetDlgItem(hDlg, IDC_TOTALS_THREAD_COUNT);
+        /*  Save the width and height */
+        GetClientRect(hDlg, &rc);
+        nPerformancePageWidth = rc.right;
+        nPerformancePageHeight = rc.bottom;
+
+        /*  Update window position */
+        SetWindowPos(hDlg, NULL, 15, 30, 0, 0, SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER);
+
+        /*
+         *  Get handles to all the controls
+         */
+        hPerformancePageTotalsFrame = GetDlgItem(hDlg, IDC_TOTALS_FRAME);
+        hPerformancePageCommitChargeFrame = GetDlgItem(hDlg, IDC_COMMIT_CHARGE_FRAME);
+        hPerformancePageKernelMemoryFrame = GetDlgItem(hDlg, IDC_KERNEL_MEMORY_FRAME);        
+        hPerformancePagePhysicalMemoryFrame = GetDlgItem(hDlg, IDC_PHYSICAL_MEMORY_FRAME);
+
+        hPerformancePageCpuUsageFrame = GetDlgItem(hDlg, IDC_CPU_USAGE_FRAME);
+        hPerformancePageMemUsageFrame = GetDlgItem(hDlg, IDC_MEM_USAGE_FRAME);
+        hPerformancePageCpuUsageHistoryFrame = GetDlgItem(hDlg, IDC_CPU_USAGE_HISTORY_FRAME);
+        hPerformancePageMemUsageHistoryFrame = GetDlgItem(hDlg, IDC_MEMORY_USAGE_HISTORY_FRAME);
+
+        hPerformancePageCommitChargeTotalEdit = GetDlgItem(hDlg, IDC_COMMIT_CHARGE_TOTAL);
+        hPerformancePageCommitChargeLimitEdit = GetDlgItem(hDlg, IDC_COMMIT_CHARGE_LIMIT);
+        hPerformancePageCommitChargePeakEdit = GetDlgItem(hDlg, IDC_COMMIT_CHARGE_PEAK);
+        hPerformancePageKernelMemoryTotalEdit = GetDlgItem(hDlg, IDC_KERNEL_MEMORY_TOTAL);
+        hPerformancePageKernelMemoryPagedEdit = GetDlgItem(hDlg, IDC_KERNEL_MEMORY_PAGED);
+        hPerformancePageKernelMemoryNonPagedEdit = GetDlgItem(hDlg, IDC_KERNEL_MEMORY_NONPAGED);
+        hPerformancePagePhysicalMemoryTotalEdit = GetDlgItem(hDlg, IDC_PHYSICAL_MEMORY_TOTAL);
+        hPerformancePagePhysicalMemoryAvailableEdit = GetDlgItem(hDlg, IDC_PHYSICAL_MEMORY_AVAILABLE);
+        hPerformancePagePhysicalMemorySystemCacheEdit = GetDlgItem(hDlg, IDC_PHYSICAL_MEMORY_SYSTEM_CACHE);
+        hPerformancePageTotalsHandleCountEdit = GetDlgItem(hDlg, IDC_TOTALS_HANDLE_COUNT);
+        hPerformancePageTotalsProcessCountEdit = GetDlgItem(hDlg, IDC_TOTALS_PROCESS_COUNT);
+        hPerformancePageTotalsThreadCountEdit = GetDlgItem(hDlg, IDC_TOTALS_THREAD_COUNT);
 
         hPerformancePageCpuUsageGraph = GetDlgItem(hDlg, IDC_CPU_USAGE_GRAPH);
-               hPerformancePageMemUsageGraph = GetDlgItem(hDlg, IDC_MEM_USAGE_GRAPH);
-               hPerformancePageMemUsageHistoryGraph = GetDlgItem(hDlg, IDC_MEM_USAGE_HISTORY_GRAPH);
+        hPerformancePageMemUsageGraph = GetDlgItem(hDlg, IDC_MEM_USAGE_GRAPH);
+        hPerformancePageMemUsageHistoryGraph = GetDlgItem(hDlg, IDC_MEM_USAGE_HISTORY_GRAPH);
         hPerformancePageCpuUsageHistoryGraph = GetDlgItem(hDlg, IDC_CPU_USAGE_HISTORY_GRAPH);
-
-               GetClientRect(hPerformancePageCpuUsageHistoryGraph, &rc);
+        
+        GetClientRect(hPerformancePageCpuUsageHistoryGraph, &rc);
         /*  create the control */
         /* PerformancePageCpuUsageHistoryGraph.Create(0, rc, hDlg, IDC_CPU_USAGE_HISTORY_GRAPH); */
         GraphCtrl_Create(&PerformancePageCpuUsageHistoryGraph, hPerformancePageCpuUsageHistoryGraph, hDlg, IDC_CPU_USAGE_HISTORY_GRAPH);
@@ -185,19 +190,19 @@ PerformancePageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
         GraphCtrl_SetBackgroundColor(&PerformancePageMemUsageHistoryGraph, RGB(0, 0, 0)) ;
         GraphCtrl_SetGridColor(&PerformancePageMemUsageHistoryGraph, RGB(152, 215, 152)) ;
         GraphCtrl_SetPlotColor(&PerformancePageMemUsageHistoryGraph, 0, RGB(255, 255, 0)) ;
-               /*  Start our refresh thread */
+        /*  Start our refresh thread */
 #ifdef RUN_PERF_PAGE
-        CreateThread(NULL, 0, PerformancePageRefreshThread, NULL, 0, NULL);
+        hRefreshThread = CreateThread(NULL, 0, PerformancePageRefreshThread, NULL, 0, NULL);
 #endif
 
-               /*
-                *  Subclass graph buttons
-                */
-        OldGraphWndProc = SetWindowLongPtr(hPerformancePageCpuUsageGraph, GWL_WNDPROC, (DWORD_PTR)Graph_WndProc);
-        SetWindowLongPtr(hPerformancePageMemUsageGraph, GWL_WNDPROC, (DWORD_PTR)Graph_WndProc);
-               OldGraphCtrlWndProc = SetWindowLongPtr(hPerformancePageMemUsageHistoryGraph, GWL_WNDPROC, (DWORD_PTR)GraphCtrl_WndProc);
-               SetWindowLongPtr(hPerformancePageCpuUsageHistoryGraph, GWL_WNDPROC, (DWORD_PTR)GraphCtrl_WndProc);
-               return TRUE;
+        /*
+         *  Subclass graph buttons
+         */
+        OldGraphWndProc = (WNDPROC)(LONG_PTR) SetWindowLongPtr(hPerformancePageCpuUsageGraph, GWL_WNDPROC, (LONG_PTR)Graph_WndProc);
+        SetWindowLongPtr(hPerformancePageMemUsageGraph, GWL_WNDPROC, (LONG_PTR)Graph_WndProc);
+        OldGraphCtrlWndProc = (WNDPROC)(LONG_PTR) SetWindowLongPtr(hPerformancePageMemUsageHistoryGraph, GWL_WNDPROC, (LONG_PTR)GraphCtrl_WndProc);
+        SetWindowLongPtr(hPerformancePageCpuUsageHistoryGraph, GWL_WNDPROC, (LONG_PTR)GraphCtrl_WndProc);
+        return TRUE;
 
        case WM_COMMAND:
                break;
@@ -420,13 +425,13 @@ DWORD WINAPI PerformancePageRefreshThread(void *lpParameter)
                 *  Get the CPU usage
                 */
                CpuUsage = PerfDataGetProcessorUsage();
-               if (CpuUsage < 0 )        CpuUsage = 0;
+               if (CpuUsage <= 0 )        CpuUsage = 0;
                if (CpuUsage > 100)       CpuUsage = 100;
                
                if (TaskManagerSettings.ShowKernelTimes)
                {
                        CpuKernelUsage = PerfDataGetProcessorSystemUsage();
-                       if (CpuKernelUsage < 0)   CpuKernelUsage = 0;
+                       if (CpuKernelUsage <= 0)   CpuKernelUsage = 0;
                        if (CpuKernelUsage > 100) CpuKernelUsage = 100;
                        } 
                        else
index d1936c6..eb37a6b 100644 (file)
@@ -62,7 +62,7 @@ ProcessListWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
         /*
          * Get the background brush
          */
-        hbrBackground = (HBRUSH) GetClassLong(hWnd, GCL_HBRBACKGROUND);
+        hbrBackground = (HBRUSH)(LONG_PTR) GetClassLongPtr(hWnd, GCL_HBRBACKGROUND);
 
         /*
          * Calculate the clip rect by getting the RECT
index 3ea805d..4d8f566 100644 (file)
@@ -42,10 +42,11 @@ DWORD WINAPI ProcessPageRefreshThread(void *lpParameter);
 INT_PTR CALLBACK
 ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
 {
-    RECT    rc;
+    RECT       rc;
     int        nXDifference;
     int        nYDifference;
     int        cx, cy;
+    HANDLE     hRefreshThread = NULL;
 
     switch (message) {
     case WM_INITDIALOG:
@@ -79,10 +80,10 @@ ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
         /*
          * Subclass the process list control so we can intercept WM_ERASEBKGND
          */
-        OldProcessListWndProc = (WNDPROC)SetWindowLongPtr(hProcessPageListCtrl, GWL_WNDPROC, (DWORD_PTR)ProcessListWndProc);
+        OldProcessListWndProc = (WNDPROC)(LONG_PTR) SetWindowLongPtr(hProcessPageListCtrl, GWL_WNDPROC, (LONG_PTR)ProcessListWndProc);
 
         /* Start our refresh thread */
-         CreateThread(NULL, 0, ProcessPageRefreshThread, NULL, 0, NULL);
+        hRefreshThread = CreateThread(NULL, 0, ProcessPageRefreshThread, NULL, 0, NULL);
 
         return TRUE;
 
@@ -90,6 +91,7 @@ ProcessPageWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
         /* Close the event handle, this will make the */
         /* refresh thread exit when the wait fails */
         CloseHandle(hProcessPageEvent);
+        CloseHandle(hRefreshThread);   
 
         SaveColumnSettings();
 
index fa6879a..25d9de2 100644 (file)
@@ -444,7 +444,7 @@ BOOL OnCreate(HWND hWnd)
     nParts[0] = 100;
     nParts[1] = 210;
     nParts[2] = 400;
-    SendMessage(hStatusWnd, SB_SETPARTS, 3, (long)nParts);
+    SendMessage(hStatusWnd, SB_SETPARTS, 3, (LPARAM) (LPINT) nParts);
 
     /* Create tab pages */
     hTabWnd = GetDlgItem(hWnd, IDC_TAB);
@@ -596,7 +596,7 @@ BOOL OnCreate(HWND hWnd)
  * This function handles all the moving events for the application
  * It moves every child window that needs moving
  */
-void OnMove( UINT nType, int cx, int cy )
+void OnMove( WPARAM nType, int cx, int cy )
 {
 #ifdef __GNUC__TEST__
     MoveWindow(hApplicationPage, TaskManagerSettings.Left + PAGE_OFFSET_LEFT, TaskManagerSettings.Top + PAGE_OFFSET_TOP, TaskManagerSettings.Right - TaskManagerSettings.Left - PAGE_OFFSET_WIDTH, TaskManagerSettings.Bottom - TaskManagerSettings.Top - PAGE_OFFSET_HEIGHT, FALSE);
@@ -609,7 +609,7 @@ void OnMove( UINT nType, int cx, int cy )
  * This function handles all the sizing events for the application
  * It re-sizes every window, and child window that needs re-sizing
  */
-void OnSize( UINT nType, int cx, int cy )
+void OnSize( WPARAM nType, int cx, int cy )
 {
     int     nParts[3];
     int     nXDifference;
@@ -638,7 +638,7 @@ void OnSize( UINT nType, int cx, int cy )
     nParts[0] = bInMenuLoop ? -1 : 100;
     nParts[1] = 210;
     nParts[2] = cx;
-    SendMessage(hStatusWnd, SB_SETPARTS, bInMenuLoop ? 1 : 3, (long)nParts);
+    SendMessage(hStatusWnd, SB_SETPARTS, bInMenuLoop ? 1 : 3, (LPARAM) (LPINT) nParts);
 
     /* Resize the tab control */
     GetWindowRect(hTabWnd, &rc);
@@ -814,7 +814,7 @@ void TaskManager_OnEnterMenuLoop(HWND hWnd)
 
     /* Update the status bar pane sizes */
     nParts = -1;
-    SendMessage(hStatusWnd, SB_SETPARTS, 1, (long)&nParts);
+    SendMessage(hStatusWnd, SB_SETPARTS, 1, (LPARAM) (LPINT)&nParts);
     bInMenuLoop = TRUE;
     SendMessage(hStatusWnd, SB_SETTEXT, (WPARAM)0, (LPARAM)_T(""));
 }
@@ -835,7 +835,7 @@ void TaskManager_OnExitMenuLoop(HWND hWnd)
     nParts[0] = 100;
     nParts[1] = 210;
     nParts[2] = rc.right;
-    SendMessage(hStatusWnd, SB_SETPARTS, 3, (long)nParts);
+    SendMessage(hStatusWnd, SB_SETPARTS, 3, (LPARAM) (LPINT) nParts);
     SendMessage(hStatusWnd, SB_SETTEXT, 0, (LPARAM)_T(""));
     wsprintf(text, szCpuUsage, PerfDataGetProcessorUsage());
     SendMessage(hStatusWnd, SB_SETTEXT, 1, (LPARAM)text);
@@ -969,7 +969,7 @@ void TaskManager_OnTabWndSelChange(void)
             hSubMenu = LoadMenu(hInst, MAKEINTRESOURCE(IDR_WINDOWSMENU));
 
             LoadString(hInst, IDS_MENU_WINDOWS, szTemp, 256);
-            InsertMenu(hMenu, 3, MF_BYPOSITION|MF_POPUP, (UINT)hSubMenu, szTemp);
+            InsertMenu(hMenu, 3, MF_BYPOSITION|MF_POPUP, (UINT_PTR) hSubMenu, szTemp);
 
             DrawMenuBar(hMainWnd);
         }
@@ -1028,7 +1028,7 @@ void TaskManager_OnTabWndSelChange(void)
         AppendMenu(hSubMenu, MF_STRING, ID_VIEW_CPUHISTORY_ONEGRAPHPERCPU, szTemp);
 
         LoadString(hInst, IDS_MENU_CPUHISTORY, szTemp, 256);
-        AppendMenu(hViewMenu, MF_STRING|MF_POPUP, (UINT)hSubMenu, szTemp);
+        AppendMenu(hViewMenu, MF_STRING|MF_POPUP, (UINT_PTR) hSubMenu, szTemp);
 
         LoadString(hInst, IDS_MENU_SHOWKERNELTIMES, szTemp, 256);
         AppendMenu(hViewMenu, MF_STRING, ID_VIEW_SHOWKERNELTIMES, szTemp);
index ad01d5e..bbe5a08 100644 (file)
@@ -127,8 +127,8 @@ extern      TASKMANAGER_SETTINGS    TaskManagerSettings;
 /* Foward declarations of functions included in this code module: */
 INT_PTR CALLBACK TaskManagerWndProc(HWND, UINT, WPARAM, LPARAM);
 BOOL OnCreate(HWND hWnd);
-void OnSize(UINT nType, int cx, int cy);
-void OnMove(UINT nType, int cx, int cy);
+void OnSize(WPARAM nType, int cx, int cy);
+void OnMove(WPARAM nType, int cx, int cy);
 void FillSolidRect(HDC hDC, LPCRECT lpRect, COLORREF clr);
 void FillSolidRect2(HDC hDC, int x, int y, int cx, int cy, COLORREF clr);
 void Draw3dRect(HDC hDC, int x, int y, int cx, int cy, COLORREF clrTopLeft, COLORREF clrBottomRight);
index ccf8cad..19fa498 100644 (file)
@@ -96,7 +96,7 @@ HICON TrayIcon_GetProcessorUsageIcon(void)
      * Now that we are done drawing put the
      * old bitmap back.
      */
-    SelectObject(hDC, hOldBitmap);
+    hBitmap = SelectObject(hDC, hOldBitmap);
     hOldBitmap = NULL;
 
     iconInfo.fIcon = TRUE;
@@ -114,7 +114,7 @@ done:
     if (hScreenDC)
         ReleaseDC(NULL, hScreenDC);
     if (hOldBitmap)
-        SelectObject(hDC, hOldBitmap);
+        hBitmap = SelectObject(hDC, hOldBitmap);
     if (hDC)
         DeleteDC(hDC);
     if (hBitmapBrush)