[SHELL32] - Initialize the shell icon cache only when needed or when FileIconInit is called (and not in the DllMain of shell32)

svn path=/trunk/; revision=73436
This commit is contained in:
Giannis Adamopoulos
2016-12-07 00:10:43 +00:00
parent 0b5c61d493
commit af810e862f
3 changed files with 20 additions and 8 deletions
+18 -5
View File
@@ -453,6 +453,9 @@ INT SIC_GetIconIndex (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags )
sice.dwSourceIndex = dwSourceIndex;
sice.dwFlags = dwFlags;
if (!sic_hdpa)
SIC_Initialize();
EnterCriticalSection(&SHELL32_SicCS);
if (NULL != DPA_GetPtr (sic_hdpa, 0))
@@ -687,6 +690,9 @@ static int SIC_LoadOverlayIcon(int icon_idx)
RegCloseKey(hKeyShellIcons);
}
if (!sic_hdpa)
SIC_Initialize();
return SIC_LoadIcon(iconPath, iconIdx, 0);
}
@@ -698,13 +704,17 @@ static int SIC_LoadOverlayIcon(int icon_idx)
*
*/
BOOL WINAPI Shell_GetImageLists(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList)
{ TRACE("(%p,%p)\n",lpBigList,lpSmallList);
{
TRACE("(%p,%p)\n",lpBigList,lpSmallList);
if (!sic_hdpa)
SIC_Initialize();
if (lpBigList)
{ *lpBigList = ShellBigIconList;
}
*lpBigList = ShellBigIconList;
if (lpSmallList)
{ *lpSmallList = ShellSmallIconList;
}
*lpSmallList = ShellSmallIconList;
return TRUE;
}
@@ -735,6 +745,9 @@ BOOL PidlToSicIndex (
TRACE("sf=%p pidl=%p %s\n", sh, pidl, bBigIcon?"Big":"Small");
if (!sic_hdpa)
SIC_Initialize();
if (SUCCEEDED (sh->GetUIObjectOf(0, 1, &pidl, IID_NULL_PPV_ARG(IExtractIconW, &ei))))
{
if (SUCCEEDED(ei->GetIconLocation(uFlags, szIconFile, MAX_PATH, &iSourceIndex, &dwFlags)))
-1
View File
@@ -308,7 +308,6 @@ STDAPI_(BOOL) DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID fImpLoad)
InitCommonControlsEx(&InitCtrls);
/* Bad idea, initialization in DllMain! */
SIC_Initialize();
InitChangeNotifications();
}
else if (dwReason == DLL_PROCESS_DETACH)
+2 -2
View File
@@ -1292,8 +1292,8 @@ BOOL WINAPI WriteCabinetState(CABINETSTATE *cs)
*
*/
BOOL WINAPI FileIconInit(BOOL bFullInit)
{ FIXME("(%s)\n", bFullInit ? "true" : "false");
return FALSE;
{
return SIC_Initialize();
}
/*************************************************************************