Patch by Christoph v.W.:
- speed-up adding items to ListView
- fix resource leak (GetDC without ReleaseDC)
(Bug #870)
Modified: trunk/reactos/subsys/system/devmgr/devmgr.c

Modified: trunk/reactos/subsys/system/devmgr/devmgr.c
--- trunk/reactos/subsys/system/devmgr/devmgr.c	2005-10-06 14:31:18 UTC (rev 18295)
+++ trunk/reactos/subsys/system/devmgr/devmgr.c	2005-10-06 15:02:50 UTC (rev 18296)
@@ -93,6 +93,8 @@
 	long Size;
 	long rc;
 
+	SendMessage(hwndListView, WM_SETREDRAW, FALSE, 0);
+
 	ListView_DeleteAllItems(hwndListView);
 	while (1)
 	{
@@ -187,6 +189,7 @@
 		}
 		SetupDiDestroyDeviceInfoList(hDevInfo);
 	}
+	SendMessage(hwndListView, WM_SETREDRAW, TRUE, 0);
 }
 
 CONFIGRET GetDeviceName(DEVINST DevInst, LPTSTR Buffer, DWORD BufferLength)
@@ -271,8 +274,9 @@
 		_tprintf(_T("CM_Locate_DevNode() failed, cr= 0x%lx\n"), cr);
 		return 1;
 	}
-
+	SendMessage(hwndListView, WM_SETREDRAW, FALSE, 0);
 	cr = ListSubNodes(root, 0);
+	SendMessage(hwndListView, WM_SETREDRAW, TRUE, 0);
 	if (cr != CR_SUCCESS)
 		return 2;
 	return 0;
@@ -304,6 +308,7 @@
 
 	i = 0;
 	DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
+	SendMessage(hwndListView, WM_SETREDRAW, FALSE, 0);
 	while (TRUE)
 	{
 		if (!SetupDiEnumDeviceInterfaces(
@@ -332,6 +337,7 @@
 		}
 
 	}
+	SendMessage(hwndListView, WM_SETREDRAW, TRUE, 0);
 	SetupDiDestroyDeviceInfoList(hDevInfo);
 	return 0;
 }
@@ -484,6 +490,7 @@
       ResizeListView(hWnd);
       break;
    case WM_DESTROY:
+      ReleaseDC(hWnd, hDC);
       PostQuitMessage(0);
       break;
    case WM_COMMAND: