[ros-diffs] [gedmurphy] 24364: - Only call SetupDiGetClassDevs once for each class, this makes load time 3 times faster although I'm still not happy with it. We may have to enumerate the drivers in the background. - use UINT for 1 bit flags, reduce the width a little and check the menu.

gedmurphy at svn.reactos.org gedmurphy at svn.reactos.org
Mon Oct 2 20:14:59 CEST 2006


Author: gedmurphy
Date: Mon Oct  2 22:14:58 2006
New Revision: 24364

URL: http://svn.reactos.org/svn/reactos?rev=24364&view=rev
Log:
- Only call SetupDiGetClassDevs once for each class, this makes load time 3 times faster although I'm still not happy with it. We may have to enumerate the drivers in the background.
- use UINT for 1 bit flags, reduce the width a little and check the menu.

Modified:
    trunk/reactos/base/applications/devmgmt/En.rc
    trunk/reactos/base/applications/devmgmt/enumdevices.c
    trunk/reactos/base/applications/devmgmt/mainwnd.c
    trunk/reactos/base/applications/devmgmt/precomp.h
    trunk/reactos/base/applications/devmgmt/resource.h

Modified: trunk/reactos/base/applications/devmgmt/En.rc
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/En.rc?rev=24364&r1=24363&r2=24364&view=diff
==============================================================================
--- trunk/reactos/base/applications/devmgmt/En.rc (original)
+++ trunk/reactos/base/applications/devmgmt/En.rc Mon Oct  2 22:14:58 2006
@@ -14,7 +14,7 @@
   END
   POPUP "View"
   BEGIN
-    MENUITEM "Devices by type",         IDC_STATIC
+    MENUITEM "Devices by type",         IDC_DEVBYTYPE, CHECKED
     MENUITEM "Devices by connection",   IDC_STATIC, GRAYED
     MENUITEM "Resources by type",       IDC_STATIC, GRAYED
     MENUITEM "Resources by connection", IDC_STATIC, GRAYED

Modified: trunk/reactos/base/applications/devmgmt/enumdevices.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/enumdevices.c?rev=24364&r1=24363&r2=24364&view=diff
==============================================================================
--- trunk/reactos/base/applications/devmgmt/enumdevices.c (original)
+++ trunk/reactos/base/applications/devmgmt/enumdevices.c Mon Oct  2 22:14:58 2006
@@ -9,8 +9,9 @@
 
 #include "precomp.h"
 
-SP_CLASSIMAGELIST_DATA ImageListData;
-
+
+static SP_CLASSIMAGELIST_DATA ImageListData;
+static HDEVINFO hDevInfo;
 
 static HTREEITEM
 InsertIntoTreeView(HWND hTV,
@@ -60,7 +61,10 @@
     {
         /* all classes enumerated */
         if(Ret == CR_NO_SUCH_VALUE)
+        {
+            hDevInfo = NULL;
             return -1;
+        }
 
         if (Ret == CR_INVALID_DATA)
             ; /*FIXME: what should we do here? */
@@ -84,18 +88,23 @@
                                    &ClassGuid,
                                    ClassImage))
     {
-        /* set the blank icon */
+        /* FIXME: can we do this?
+         * Set the blank icon: IDI_SETUPAPI_BLANK = 41
+         * it'll be image 24 in the imagelist */
         *ClassImage = 41;
     }
 
-    /* FIXME: do we need this?
+    /* Get device info for all devices of a particular class */
     hDevInfo = SetupDiGetClassDevs(&ClassGuid,
                                    0,
                                    NULL,
                                    DIGCF_PRESENT);
     if (hDevInfo == INVALID_HANDLE_VALUE)
+    {
+        hDevInfo = NULL;
         return 0;
-    */
+    }
+
 
     KeyClass = SetupDiOpenClassRegKeyEx(&ClassGuid,
                                         MAXIMUM_ALLOWED,
@@ -120,9 +129,6 @@
         return -3;
     }
 
-    /* FIXME: see above?
-    SetupDiDestroyDeviceInfoList(hDevInfo); */
-
     *DevPresent = TRUE;
 
     RegCloseKey(KeyClass);
@@ -136,7 +142,6 @@
             TCHAR* DeviceClassName,
             TCHAR* DeviceName)
 {
-    HDEVINFO hDevInfo;
     SP_DEVINFO_DATA DeviceInfoData;
     DWORD RequiredSize = 0;
     GUID *guids = NULL;
@@ -172,13 +177,6 @@
         }
     }
 
-//TimerInfo(_T("IN"));
-    /* get device info set for our device class */
-    hDevInfo = SetupDiGetClassDevs(guids,
-                                   0,
-                                   NULL,
-                                   DIGCF_PRESENT);
-//TimerInfo(_T("OUT"));
     HeapFree(GetProcessHeap(), 0, guids);
     if(hDevInfo == INVALID_HANDLE_VALUE)
     {
@@ -198,8 +196,7 @@
 
     if (!bRet)
     {
-        //no such device:
-        SetupDiDestroyDeviceInfoList(hDevInfo);
+        /* no such device */
         return -1;
     }
 
@@ -223,7 +220,6 @@
         if (!bRet)
         {
             /* if the description fails, just give up! */
-            SetupDiDestroyDeviceInfoList(hDevInfo);
             return -5;
         }
     }
@@ -289,6 +285,13 @@
 
             } while (Ret != -1);
 
+            /* kill InfoList initialized in EnumDeviceClasses */
+            if (hDevInfo)
+            {
+                SetupDiDestroyDeviceInfoList(hDevInfo);
+                hDevInfo = NULL;
+            }
+
             if (!TreeView_GetChild(Info->hTreeView,
                                    hDevItem))
             {

Modified: trunk/reactos/base/applications/devmgmt/mainwnd.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/mainwnd.c?rev=24364&r1=24363&r2=24364&view=diff
==============================================================================
--- trunk/reactos/base/applications/devmgmt/mainwnd.c (original)
+++ trunk/reactos/base/applications/devmgmt/mainwnd.c Mon Oct  2 22:14:58 2006
@@ -546,7 +546,7 @@
                                   WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
                                   CW_USEDEFAULT,
                                   CW_USEDEFAULT,
-                                  650,
+                                  600,
                                   450,
                                   NULL,
                                   NULL,

Modified: trunk/reactos/base/applications/devmgmt/precomp.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/precomp.h?rev=24364&r1=24363&r2=24364&view=diff
==============================================================================
--- trunk/reactos/base/applications/devmgmt/precomp.h (original)
+++ trunk/reactos/base/applications/devmgmt/precomp.h Mon Oct  2 22:14:58 2006
@@ -28,7 +28,7 @@
     int   nCmdShow;
 
     /* status flags */
-    BOOL InMenuLoop : 1;
+    UINT InMenuLoop : 1;
 
 } MAIN_WND_INFO, *PMAIN_WND_INFO;
 

Modified: trunk/reactos/base/applications/devmgmt/resource.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/devmgmt/resource.h?rev=24364&r1=24363&r2=24364&view=diff
==============================================================================
--- trunk/reactos/base/applications/devmgmt/resource.h (original)
+++ trunk/reactos/base/applications/devmgmt/resource.h Mon Oct  2 22:14:58 2006
@@ -19,6 +19,7 @@
 /* menus */
 #define IDR_MAINMENU        102
 #define IDR_POPUP           103
+#define IDC_DEVBYTYPE       104
 
 /* tooltips */
 #define IDS_TOOLTIP_PROP    6000




More information about the Ros-diffs mailing list