From 9cf1444eb7888f2d942d220f938aa893396a8a1b Mon Sep 17 00:00:00 2001
From: George Hazan <ghazan@miranda.im>
Date: Wed, 18 Apr 2018 20:51:18 +0300
Subject: g_hInstance incapulated into PLUGIN<>, no need in the separate
 variable

---
 protocols/MSN/src/msn.cpp       | 42 ++++++++++++++++++-----------------------
 protocols/MSN/src/msn_auth.cpp  |  6 +++---
 protocols/MSN/src/msn_chat.cpp  |  4 ++--
 protocols/MSN/src/msn_links.cpp |  2 +-
 protocols/MSN/src/msn_lists.cpp |  2 +-
 protocols/MSN/src/msn_menu.cpp  |  2 +-
 protocols/MSN/src/msn_opts.cpp  |  6 +++---
 protocols/MSN/src/msn_proto.h   |  1 +
 protocols/MSN/src/msn_svcs.cpp  |  4 ++--
 protocols/MSN/src/stdafx.h      |  1 -
 10 files changed, 32 insertions(+), 38 deletions(-)

(limited to 'protocols/MSN')

diff --git a/protocols/MSN/src/msn.cpp b/protocols/MSN/src/msn.cpp
index fe24b511e2..703df9323c 100644
--- a/protocols/MSN/src/msn.cpp
+++ b/protocols/MSN/src/msn.cpp
@@ -24,9 +24,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #include "msn_proto.h"
 #include "version.h"
 
-CMPlugin g_plugin;
 CLIST_INTERFACE *pcli;
-HINSTANCE g_hInstance;
 int hLangpack;
 
 /////////////////////////////////////////////////////////////////////////////////////////
@@ -55,33 +53,36 @@ static const PLUGININFOEX pluginInfo =
 	{0x97724af9, 0xf3fb, 0x47d3, {0xa3, 0xbf, 0xea, 0xa9, 0x35, 0xc7, 0x4e, 0x6d}}
 };
 
-// Protocol instances
-static int sttCompareProtocols(const CMsnProto *p1, const CMsnProto *p2)
+extern "C" __declspec(dllexport) const PLUGININFOEX* MirandaPluginInfoEx(DWORD)
 {
-	return mir_wstrcmp(p1->m_tszUserName, p2->m_tszUserName);
+	return &pluginInfo;
 }
 
-//	Main DLL function
-extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID)
-{
-	if (fdwReason == DLL_PROCESS_ATTACH) {
-		g_hInstance = hinstDLL;
-		DisableThreadLibraryCalls(hinstDLL);
-	}
-	return TRUE;
-}
+/////////////////////////////////////////////////////////////////////////////////////////
+// MirandaInterfaces - returns the protocol interface to the core
 
+extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOCOL, MIID_LAST };
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+CMPlugin g_plugin;
+
+extern "C" _pfnCrtInit _pRawDllMain = &CMPlugin::RawDllMain;
+
+/////////////////////////////////////////////////////////////////////////////////////////
 //	OnModulesLoaded - finalizes plugin's configuration on load
+
 static int OnModulesLoaded(WPARAM, LPARAM)
 {
 	avsPresent = ServiceExists(MS_AV_SETMYAVATARW) != 0;
 
 	MsnLinks_Init();
-
 	return 0;
 }
 
+/////////////////////////////////////////////////////////////////////////////////////////
 // Performs a primary set of actions upon plugin loading
+
 extern "C" int __declspec(dllexport) Load(void)
 {
 	mir_getLP(&pluginInfo);
@@ -94,19 +95,12 @@ extern "C" int __declspec(dllexport) Load(void)
 	return 0;
 }
 
+/////////////////////////////////////////////////////////////////////////////////////////
 // Unload a plugin
+
 extern "C" int __declspec(dllexport) Unload(void)
 {
 	MSN_RemoveContactMenus();
 	MsnLinks_Destroy();
 	return 0;
 }
-
-// MirandaPluginInfoEx - returns an information about a plugin
-extern "C" __declspec(dllexport) const PLUGININFOEX* MirandaPluginInfoEx(DWORD)
-{
-	return &pluginInfo;
-}
-
-// MirandaInterfaces - returns the protocol interface to the core
-extern "C" __declspec(dllexport) const MUUID MirandaInterfaces[] = { MIID_PROTOCOL, MIID_LAST };
diff --git a/protocols/MSN/src/msn_auth.cpp b/protocols/MSN/src/msn_auth.cpp
index db67f3cbb1..135ffaf6c1 100644
--- a/protocols/MSN/src/msn_auth.cpp
+++ b/protocols/MSN/src/msn_auth.cpp
@@ -886,14 +886,14 @@ void __cdecl CMsnProto::msn_IEAuthThread(void *pParam)
 
 	wc.cbSize = sizeof(WNDCLASSEX);
 	wc.cbWndExtra = sizeof(void*);
-	wc.hInstance = g_hInstance;
+	wc.hInstance = g_plugin.getInst();
 	wc.lpfnWndProc = AuthWindowProc;
 	wc.lpszClassName = ClassName;
 	RegisterClassEx(&wc);
 
 	if ((hWnd = CreateWindowEx(0, ClassName, L"MSN Login", WS_OVERLAPPEDWINDOW,
 		CW_USEDEFAULT, CW_USEDEFAULT, 640, 480,
-		HWND_DESKTOP, nullptr, g_hInstance, pParam))) {
+		HWND_DESKTOP, nullptr, g_plugin.getInst(), pParam))) {
 		ShowWindow(hWnd, SW_SHOW);
 		UpdateWindow(hWnd);
 
@@ -903,7 +903,7 @@ void __cdecl CMsnProto::msn_IEAuthThread(void *pParam)
 		}
 	}
 
-	UnregisterClass(ClassName, g_hInstance);
+	UnregisterClass(ClassName, g_plugin.getInst());
 	CoUninitialize();
 }
 
diff --git a/protocols/MSN/src/msn_chat.cpp b/protocols/MSN/src/msn_chat.cpp
index a10a43a2d6..61397d677b 100644
--- a/protocols/MSN/src/msn_chat.cpp
+++ b/protocols/MSN/src/msn_chat.cpp
@@ -495,7 +495,7 @@ int CMsnProto::MSN_GCEventHook(WPARAM, LPARAM lParam)
 		break;
 
 	case GC_USER_CHANMGR:
-		DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_CHATROOM_INVITE), nullptr, DlgInviteToChat,
+		DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CHATROOM_INVITE), nullptr, DlgInviteToChat,
 			LPARAM(new InviteChatParam(gch->ptszID, NULL, this)));
 		break;
 
@@ -506,7 +506,7 @@ int CMsnProto::MSN_GCEventHook(WPARAM, LPARAM lParam)
 	case GC_USER_LOGMENU:
 		switch (gch->dwData) {
 		case 10:
-			DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_CHATROOM_INVITE), nullptr, DlgInviteToChat,
+			DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CHATROOM_INVITE), nullptr, DlgInviteToChat,
 				LPARAM(new InviteChatParam(gch->ptszID, NULL, this)));
 			break;
 
diff --git a/protocols/MSN/src/msn_links.cpp b/protocols/MSN/src/msn_links.cpp
index 16345a3b49..0235544138 100644
--- a/protocols/MSN/src/msn_links.cpp
+++ b/protocols/MSN/src/msn_links.cpp
@@ -135,7 +135,7 @@ void MsnLinks_Init(void)
 	static const char szService[] = "MSN/ParseMsnimLink";
 
 	CreateServiceFunction(szService, ServiceParseMsnimLink);
-	AssocMgr_AddNewUrlTypeW("msnim:", TranslateT("MSN Link Protocol"), g_hInstance, IDI_MSN, szService, 0);
+	AssocMgr_AddNewUrlTypeW("msnim:", TranslateT("MSN Link Protocol"), g_plugin.getInst(), IDI_MSN, szService, 0);
 }
 
 void MsnLinks_Destroy(void)
diff --git a/protocols/MSN/src/msn_lists.cpp b/protocols/MSN/src/msn_lists.cpp
index 6823338996..490a089a5d 100644
--- a/protocols/MSN/src/msn_lists.cpp
+++ b/protocols/MSN/src/msn_lists.cpp
@@ -397,7 +397,7 @@ static void SaveListItem(MCONTACT hContact, const char* szEmail, int list, int i
 	if (iNewValue == 0) {
 		if (list & LIST_FL) {
 			DeleteParam param = { proto, hContact };
-			DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_DELETECONTACT), nullptr, DlgDeleteContactUI, (LPARAM)&param);
+			DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_DELETECONTACT), nullptr, DlgDeleteContactUI, (LPARAM)&param);
 			return;
 		}
 
diff --git a/protocols/MSN/src/msn_menu.cpp b/protocols/MSN/src/msn_menu.cpp
index 161258a4b7..43b1edfe27 100644
--- a/protocols/MSN/src/msn_menu.cpp
+++ b/protocols/MSN/src/msn_menu.cpp
@@ -100,7 +100,7 @@ INT_PTR CMsnProto::MsnEditProfile(WPARAM, LPARAM)
 // MsnInviteCommand - invite command callback function
 INT_PTR CMsnProto::MsnInviteCommand(WPARAM, LPARAM)
 {
-	DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_CHATROOM_INVITE), nullptr, DlgInviteToChat,
+	DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CHATROOM_INVITE), nullptr, DlgInviteToChat,
 		LPARAM(new InviteChatParam(nullptr, NULL, this)));
 	return 0;
 }
diff --git a/protocols/MSN/src/msn_opts.cpp b/protocols/MSN/src/msn_opts.cpp
index 77b042b0c4..32b3c54cdc 100644
--- a/protocols/MSN/src/msn_opts.cpp
+++ b/protocols/MSN/src/msn_opts.cpp
@@ -47,7 +47,7 @@ static IconItem iconList[] =
 
 void MsnInitIcons(void)
 {
-	Icon_Register(g_hInstance, "Protocols/MSN", iconList, _countof(iconList), "MSN");
+	Icon_Register(g_plugin.getInst(), "Protocols/MSN", iconList, _countof(iconList), "MSN");
 }
 
 HICON LoadIconEx(const char* name, bool big)
@@ -593,7 +593,7 @@ int CMsnProto::OnOptionsInit(WPARAM wParam, LPARAM)
 {
 	OPTIONSDIALOGPAGE odp = { 0 };
 	odp.position = -790000000;
-	odp.hInstance = g_hInstance;
+	odp.hInstance = g_plugin.getInst();
 	odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_MSN);
 	odp.szTitle.w = m_tszUserName;
 	odp.szGroup.w = LPGENW("Network");
@@ -623,7 +623,7 @@ int CMsnProto::OnOptionsInit(WPARAM wParam, LPARAM)
 
 INT_PTR CMsnProto::SvcCreateAccMgrUI(WPARAM, LPARAM lParam)
 {
-	return (INT_PTR)CreateDialogParam(g_hInstance, MAKEINTRESOURCE(IDD_ACCMGRUI),
+	return (INT_PTR)CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_ACCMGRUI),
 		(HWND)lParam, DlgProcAccMgrUI, (LPARAM)this);
 }
 
diff --git a/protocols/MSN/src/msn_proto.h b/protocols/MSN/src/msn_proto.h
index 3f9af6c5d3..e8a327452b 100644
--- a/protocols/MSN/src/msn_proto.h
+++ b/protocols/MSN/src/msn_proto.h
@@ -497,6 +497,7 @@ struct CMPlugin : public ACCPROTOPLUGIN<CMsnProto>
 	CMPlugin() :
 		ACCPROTOPLUGIN<CMsnProto>("MSN")
 	{
+		::DisableThreadLibraryCalls(m_hInst);
 		SetUniqueId("wlid");
 	}
 };
diff --git a/protocols/MSN/src/msn_svcs.cpp b/protocols/MSN/src/msn_svcs.cpp
index 2e50f2548f..657aa54881 100644
--- a/protocols/MSN/src/msn_svcs.cpp
+++ b/protocols/MSN/src/msn_svcs.cpp
@@ -267,7 +267,7 @@ int CMsnProto::OnContactDeleted(WPARAM hContact, LPARAM)
 
 			if (Lists_IsInList(LIST_FL, szEmail)) {
 				DeleteParam param = { this, MCONTACT(hContact) };
-				DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_DELETECONTACT), nullptr, DlgDeleteContactUI, (LPARAM)&param);
+				DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_DELETECONTACT), nullptr, DlgDeleteContactUI, (LPARAM)&param);
 
 				MsnContact *msc = Lists_Get(szEmail);
 				if (msc)
@@ -406,7 +406,7 @@ int CMsnProto::OnWindowPopup(WPARAM, LPARAM lParam)
 
 	case MSG_WINDOWPOPUP_SELECTED:
 		if (mwpd->selection == 13465)
-			DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_CHATROOM_INVITE), nullptr, DlgInviteToChat, LPARAM(new InviteChatParam(nullptr, mwpd->hContact, this)));
+			DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CHATROOM_INVITE), nullptr, DlgInviteToChat, LPARAM(new InviteChatParam(nullptr, mwpd->hContact, this)));
 		break;
 	}
 
diff --git a/protocols/MSN/src/stdafx.h b/protocols/MSN/src/stdafx.h
index 48fd351dfc..f996fcdecc 100644
--- a/protocols/MSN/src/stdafx.h
+++ b/protocols/MSN/src/stdafx.h
@@ -919,7 +919,6 @@ const char msnStoreAppId[] = "Skype";
 const char msnProductVer[] = "0/6.16.0.105/259/";
 const char msnProtID[] = "MSNP24";
 
-extern HINSTANCE g_hInstance;
 extern bool g_bTerminated;
 
 ///////////////////////////////////////////////////////////////////////////////
-- 
cgit v1.2.3