From d84b7beba3fd5148033b57b75c8299a2672377be Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 26 Mar 2019 21:52:00 +0300 Subject: ME_SKIN2_ICONSCHANGED is totally obsoleted, thus removed --- src/mir_app/src/IcoLib.h | 5 ++++- src/mir_app/src/chat_svc.cpp | 4 +--- src/mir_app/src/icolib.cpp | 21 ++++++++++++++++++--- src/mir_app/src/menu_utils.cpp | 2 +- src/mir_app/src/skin2opts.cpp | 4 +++- 5 files changed, 27 insertions(+), 9 deletions(-) (limited to 'src/mir_app') diff --git a/src/mir_app/src/IcoLib.h b/src/mir_app/src/IcoLib.h index 202e99fb96..7b4ea76779 100644 --- a/src/mir_app/src/IcoLib.h +++ b/src/mir_app/src/IcoLib.h @@ -111,6 +111,9 @@ IconSourceItem* GetIconSourceItem(const wchar_t* file, int indx, int cxIcon, int IcolibItem* IcoLib_FindHIcon(HICON hIcon, bool &big); IcolibItem* IcoLib_FindIcon(const char* pszIconName); +void CreateImageLists(); +void DestroyImageLists(); + int SkinOptionsInit(WPARAM, LPARAM); extern mir_cs csIconList; @@ -120,4 +123,4 @@ extern LIST sectionList; extern BOOL bNeedRebuild; extern int iconEventActive; extern HICON hIconBlank; -extern HANDLE hIcons2ChangedEvent, hIconsChangedEvent; +extern HANDLE hIconsChangedEvent; diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index 5b98f4fe44..9deb887ec7 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -764,6 +764,7 @@ int LoadChatModule(void) HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded); HookEvent(ME_SYSTEM_PRESHUTDOWN, PreShutdown); HookEvent(ME_SKIN_ICONSCHANGED, IconsChanged); + HookEvent(ME_FONT_RELOAD, FontsChanged); g_hWindowList = WindowList_Create(); hHookEvent = CreateHookableEvent(ME_GC_HOOK_EVENT); @@ -773,9 +774,6 @@ int LoadChatModule(void) g_chatApi.hevPreCreate = CreateHookableEvent(ME_MSG_PRECREATEEVENT); g_chatApi.hevWinPopup = CreateHookableEvent(ME_MSG_WINDOWPOPUP); - HookEvent(ME_FONT_RELOAD, FontsChanged); - HookEvent(ME_SKIN2_ICONSCHANGED, IconsChanged); - g_hMenu = LoadMenu(g_plugin.getInst(), MAKEINTRESOURCE(IDR_SRMM)); TranslateMenu(g_hMenu); diff --git a/src/mir_app/src/icolib.cpp b/src/mir_app/src/icolib.cpp index e40a83f971..bda29a14d8 100644 --- a/src/mir_app/src/icolib.cpp +++ b/src/mir_app/src/icolib.cpp @@ -28,7 +28,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. static BOOL bModuleInitialized = FALSE; static volatile LONG iStaticCount = 1; -HANDLE hIcons2ChangedEvent, hIconsChangedEvent; +static HIMAGELIST himlSmall, hImlBig; +HANDLE hIconsChangedEvent; HICON hIconBlank = nullptr; @@ -64,6 +65,18 @@ LIST iconList(20, sttCompareIcons); ///////////////////////////////////////////////////////////////////////////////////////// // Utility functions +void CreateImageLists() +{ + himlSmall = ImageList_Create(g_iIconSX, g_iIconSY, ILC_COLOR32 | ILC_MASK, 50, 50); + hImlBig = ImageList_Create(g_iIconX, g_iIconY, ILC_COLOR32 | ILC_MASK, 50, 50); +} + +void DestroyImageLists() +{ + ImageList_Destroy(himlSmall); himlSmall = 0; + ImageList_Destroy(hImlBig); hImlBig = 0; +} + void __fastcall SafeDestroyIcon(HICON &hIcon) { if (hIcon != nullptr) { @@ -781,9 +794,10 @@ int LoadIcoLibModule(void) hIconBlank = LoadIconEx(g_plugin.getInst(), MAKEINTRESOURCE(IDI_BLANK), 0); - hIcons2ChangedEvent = CreateHookableEvent(ME_SKIN2_ICONSCHANGED); hIconsChangedEvent = CreateHookableEvent(ME_SKIN_ICONSCHANGED); + CreateImageLists(); + HookEvent(ME_OPT_INITIALISE, SkinOptionsInit); return 0; } @@ -794,7 +808,8 @@ void UnloadIcoLibModule(void) return; DestroyHookableEvent(hIconsChangedEvent); - DestroyHookableEvent(hIcons2ChangedEvent); + + DestroyImageLists(); for (auto &p : iconList) delete p; diff --git a/src/mir_app/src/menu_utils.cpp b/src/mir_app/src/menu_utils.cpp index 799f417bdf..b2328884d0 100644 --- a/src/mir_app/src/menu_utils.cpp +++ b/src/mir_app/src/menu_utils.cpp @@ -1278,7 +1278,6 @@ static VOID CALLBACK PostRegisterIcons(HWND, UINT, UINT_PTR, DWORD) static int OnModulesLoaded(WPARAM, LPARAM) { posttimerid = SetTimer(nullptr, 0, 5, (TIMERPROC)PostRegisterIcons); - HookEvent(ME_SKIN2_ICONSCHANGED, OnIconLibChanges); return 0; } @@ -1289,6 +1288,7 @@ int InitGenMenu() HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); HookEvent(ME_OPT_INITIALISE, GenMenuOptInit); + HookEvent(ME_SKIN_ICONSCHANGED, OnIconLibChanges); return 0; } diff --git a/src/mir_app/src/skin2opts.cpp b/src/mir_app/src/skin2opts.cpp index ea8a54d6a8..24fe66819d 100644 --- a/src/mir_app/src/skin2opts.cpp +++ b/src/mir_app/src/skin2opts.cpp @@ -485,9 +485,11 @@ class CIcoLibOptsDlg : public CDlgBase { UpdateIconsPreview(); + DestroyImageLists(); + CreateImageLists(); + iconEventActive = 1; // Disable icon destroying - performance boost NotifyEventHooks(hIconsChangedEvent, 0, 0); - NotifyEventHooks(hIcons2ChangedEvent, 0, 0); iconEventActive = 0; mir_cslock lck(csIconList); // Destroy unused icons -- cgit v1.2.3