[ros-diffs] [gedmurphy] 40312: reapply the icon cache init code

gedmurphy at svn.reactos.org gedmurphy at svn.reactos.org
Wed Apr 1 09:27:24 CEST 2009


Author: gedmurphy
Date: Wed Apr  1 11:27:23 2009
New Revision: 40312

URL: http://svn.reactos.org/svn/reactos?rev=40312&view=rev
Log:
reapply the icon cache init code

Modified:
    trunk/reactos/dll/win32/shell32/iconcache.c

Modified: trunk/reactos/dll/win32/shell32/iconcache.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shell32/iconcache.c?rev=40312&r1=40311&r2=40312&view=diff
==============================================================================
--- trunk/reactos/dll/win32/shell32/iconcache.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/shell32/iconcache.c [iso-8859-1] Wed Apr  1 11:27:23 2009
@@ -384,8 +384,9 @@
 
     TRACE("Entered SIC_Initialize\n");
 
-    if (sic_hdpa) /* already initialized?*/
+    if (sic_hdpa)
     {
+        TRACE("Icon cache already initialized\n");
         return TRUE;
     }
 
@@ -429,25 +430,56 @@
                                           ilMask,
                                           100,
                                           100);
+
     ShellBigIconList = ImageList_Create(cx_large,
                                         cy_large,
                                         ilMask,
                                         100,
                                         100);
-        /* Load the document icon, which is used as the default if an icon isn't found. */
-        hSm = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(IDI_SHELL_DOCUMENT),
-                                IMAGE_ICON, cx_small, cy_small, LR_SHARED);
-        hLg = LoadImageA(shell32_hInstance, MAKEINTRESOURCEA(IDI_SHELL_DOCUMENT),
-                                IMAGE_ICON, cx_large, cy_large, LR_SHARED);
-
-        if (!hSm || !hLg) 
+    if (ShellSmallIconList)
+    {
+         /* Load the document icon, which is used as the default if an icon isn't found. */
+        hSm = (HICON)LoadImageW(shell32_hInstance,
+                                MAKEINTRESOURCEW(IDI_SHELL_DOCUMENT),
+                                IMAGE_ICON,
+                                cx_small,
+                                cy_small,
+                                LR_SHARED | LR_DEFAULTCOLOR);
+        if (!hSm)
         {
-          FIXME("Failed to load IDI_SHELL_DOCUMENT icon!\n");
-          return FALSE;
+            ERR("Failed to load IDI_SHELL_DOCUMENT icon1!\n");
+            return FALSE;
         }
-
-        SIC_IconAppend (swShell32Name, IDI_SHELL_DOCUMENT-1, hSm, hLg, 0);
-        SIC_IconAppend (swShell32Name, -IDI_SHELL_DOCUMENT, hSm, hLg, 0);
+    }
+    else
+    {
+        ERR("Failed to load ShellSmallIconList\n");
+        return FALSE;
+    }
+
+    if (ShellBigIconList)
+    {
+        hLg = (HICON)LoadImageW(shell32_hInstance,
+                                MAKEINTRESOURCEW(IDI_SHELL_DOCUMENT),
+                                IMAGE_ICON,
+                                cx_large,
+                                cy_large,
+                                LR_SHARED | LR_DEFAULTCOLOR);
+        if (!hLg)
+        {
+            ERR("Failed to load IDI_SHELL_DOCUMENT icon2!\n");
+            DestroyIcon(hSm);
+            return FALSE;
+        }
+    }
+    else
+    {
+        ERR("Failed to load ShellBigIconList\n");
+        return FALSE;
+    }
+
+    SIC_IconAppend(swShell32Name, IDI_SHELL_DOCUMENT-1, hSm, hLg, 0);
+    SIC_IconAppend(swShell32Name, -IDI_SHELL_DOCUMENT, hSm, hLg, 0);
 
     TRACE("hIconSmall=%p hIconBig=%p\n",ShellSmallIconList, ShellBigIconList);
 



More information about the Ros-diffs mailing list