uxtheme: Avoid memory leaks.
A THEME_FILE struct and four global ATOMs are leaked when unloading uxtheme. Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b5abd53494
commit
6f00a2983a
|
@ -31,14 +31,18 @@ WINE_DEFAULT_DEBUG_CHANNEL(uxtheme);
|
||||||
/***********************************************************************/
|
/***********************************************************************/
|
||||||
|
|
||||||
/* For the moment, do nothing here. */
|
/* For the moment, do nothing here. */
|
||||||
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpv)
|
BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, void *reserved)
|
||||||
{
|
{
|
||||||
TRACE("%p 0x%x %p\n", hInstDLL, fdwReason, lpv);
|
TRACE("%p 0x%x %p\n", hInstDLL, fdwReason, reserved);
|
||||||
switch(fdwReason) {
|
switch(fdwReason) {
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
DisableThreadLibraryCalls(hInstDLL);
|
DisableThreadLibraryCalls(hInstDLL);
|
||||||
UXTHEME_InitSystem(hInstDLL);
|
UXTHEME_InitSystem(hInstDLL);
|
||||||
break;
|
break;
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
if (reserved) break;
|
||||||
|
UXTHEME_UninitSystem();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -509,6 +509,16 @@ void UXTHEME_InitSystem(HINSTANCE hInst)
|
||||||
UXTHEME_LoadTheme();
|
UXTHEME_LoadTheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UXTHEME_UninitSystem(void)
|
||||||
|
{
|
||||||
|
MSSTYLES_SetActiveTheme(NULL, FALSE);
|
||||||
|
|
||||||
|
GlobalDeleteAtom(atWindowTheme);
|
||||||
|
GlobalDeleteAtom(atSubAppName);
|
||||||
|
GlobalDeleteAtom(atSubIdList);
|
||||||
|
GlobalDeleteAtom(atDialogThemeEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* IsAppThemed (UXTHEME.@)
|
* IsAppThemed (UXTHEME.@)
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -95,6 +95,7 @@ HRESULT WINAPI ParseThemeIniFile(LPCWSTR pszIniFileName, LPWSTR pszUnknown,
|
||||||
ParseThemeIniFileProc callback, LPVOID lpData) DECLSPEC_HIDDEN;
|
ParseThemeIniFileProc callback, LPVOID lpData) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
extern void UXTHEME_InitSystem(HINSTANCE hInst) DECLSPEC_HIDDEN;
|
extern void UXTHEME_InitSystem(HINSTANCE hInst) DECLSPEC_HIDDEN;
|
||||||
|
extern void UXTHEME_UninitSystem(void) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
/* No alpha blending */
|
/* No alpha blending */
|
||||||
#define ALPHABLEND_NONE 0
|
#define ALPHABLEND_NONE 0
|
||||||
|
|
Loading…
Reference in New Issue