From 5c89906040b2ea1f307f3e337655a9429b858207 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Tue, 30 Jun 2015 21:37:39 +0000 Subject: MirLua: common code moved to m_core.h git-svn-id: http://svn.miranda-ng.org/main/trunk@14465 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/MirLua/src/m_core.cpp | 19 ++----------------- plugins/MirLua/src/m_core.h | 26 ++++++++++++++++++++++++++ plugins/MirLua/src/m_genmenu.h | 2 +- plugins/MirLua/src/m_msg_buttonsbar.cpp | 11 ++++++----- plugins/MirLua/src/m_toptoolbar.cpp | 3 +++ plugins/MirLua/src/mlua.cpp | 6 +++--- plugins/MirLua/src/stdafx.h | 3 +-- 7 files changed, 42 insertions(+), 28 deletions(-) create mode 100644 plugins/MirLua/src/m_core.h (limited to 'plugins/MirLua') diff --git a/plugins/MirLua/src/m_core.cpp b/plugins/MirLua/src/m_core.cpp index b022c013d6..41adff71fc 100644 --- a/plugins/MirLua/src/m_core.cpp +++ b/plugins/MirLua/src/m_core.cpp @@ -1,21 +1,6 @@ #include "stdafx.h" -static LIST Hooks(1, PtrKeySortT); -static LIST Events(1, PtrKeySortT); -static LIST Services(1, PtrKeySortT); - -struct HandleRefParam -{ - HANDLE h; - int ref; - lua_State *L; - HandleRefParam(HANDLE h) : L(NULL), h(h), ref(0) { } - HandleRefParam(lua_State *L, HANDLE h, int ref = 0) : L(L), h(h), ref(ref) { } -}; -static LIST HookRefs(1, HandleKeySortT); -static LIST ServiceRefs(1, HandleKeySortT); - -void CMLua::KillModuleEventHooks() +void KillModuleEventHooks() { while (Hooks.getCount()) { @@ -43,7 +28,7 @@ void CMLua::KillModuleEventHooks() } } -void CMLua::KillModuleServices() +void KillModuleServices() { while (Services.getCount()) { diff --git a/plugins/MirLua/src/m_core.h b/plugins/MirLua/src/m_core.h new file mode 100644 index 0000000000..8313c3383d --- /dev/null +++ b/plugins/MirLua/src/m_core.h @@ -0,0 +1,26 @@ +#ifndef _LUA_M_CORE_H_ +#define _LUA_M_CORE_H_ + +#define MLUA_CORE "m" +LUAMOD_API int (luaopen_m)(lua_State *L); + +static LIST Hooks(1, PtrKeySortT); +static LIST Events(1, PtrKeySortT); +static LIST Services(1, PtrKeySortT); + +struct HandleRefParam +{ + HANDLE h; + int ref; + lua_State *L; + HandleRefParam(HANDLE h) : L(NULL), h(h), ref(0) { } + HandleRefParam(lua_State *L, HANDLE h, int ref = 0) : L(L), h(h), ref(ref) { } +}; + +static LIST HookRefs(1, HandleKeySortT); +static LIST ServiceRefs(1, HandleKeySortT); + +void KillModuleEventHooks(); +void KillModuleServices(); + +#endif //_LUA_M_CORE_H_ \ No newline at end of file diff --git a/plugins/MirLua/src/m_genmenu.h b/plugins/MirLua/src/m_genmenu.h index 69ddff6215..ecb04092e1 100644 --- a/plugins/MirLua/src/m_genmenu.h +++ b/plugins/MirLua/src/m_genmenu.h @@ -6,4 +6,4 @@ LUAMOD_API int (luaopen_m_genmenu)(lua_State *L); void MakeMenuItem(lua_State *L, CMenuItem &mi); -#endif //_LUA_CONSOLE_H_ \ No newline at end of file +#endif //_LUA_M_GENMENU_H_ \ No newline at end of file diff --git a/plugins/MirLua/src/m_msg_buttonsbar.cpp b/plugins/MirLua/src/m_msg_buttonsbar.cpp index 4d969fdfa6..a570fdd620 100644 --- a/plugins/MirLua/src/m_msg_buttonsbar.cpp +++ b/plugins/MirLua/src/m_msg_buttonsbar.cpp @@ -67,9 +67,6 @@ static int lua_ModifyButton(lua_State *L) INT_PTR res = ::CallService(MS_BB_MODIFYBUTTON, 0, (LPARAM)bbb); lua_pushinteger(L, res); - mir_free(bbb->pszModuleName); - mir_free(bbb->ptszTooltip); - return 1; } @@ -101,6 +98,9 @@ static int lua_OnMsgToolBarLoaded(lua_State *L) HANDLE res = ::HookEventObjParam(ME_MSG_TOOLBARLOADED, CMLua::HookEventObjParam, L, ref); lua_pushlightuserdata(L, res); + Hooks.insert(res); + HookRefs.insert(new HandleRefParam(L, res, ref)); + return 1; } @@ -134,8 +134,6 @@ int ButtonPressedHookEventObjParam(void *obj, WPARAM wParam, LPARAM lParam, LPAR int res = (int)lua_tointeger(L, 1); - //luaL_unref(L, LUA_REGISTRYINDEX, ref); - return res; } @@ -153,6 +151,9 @@ static int lua_OnMsgToolBarButtonPressed(lua_State *L) HANDLE res = ::HookEventObjParam(ME_MSG_BUTTONPRESSED, ButtonPressedHookEventObjParam, L, ref); lua_pushlightuserdata(L, res); + Hooks.insert(res); + HookRefs.insert(new HandleRefParam(L, res, ref)); + return 1; } diff --git a/plugins/MirLua/src/m_toptoolbar.cpp b/plugins/MirLua/src/m_toptoolbar.cpp index 4e96f645e5..3e26f962dc 100644 --- a/plugins/MirLua/src/m_toptoolbar.cpp +++ b/plugins/MirLua/src/m_toptoolbar.cpp @@ -104,6 +104,9 @@ static int lua_OnTopToolBarLoaded(lua_State *L) HANDLE res = ::HookEventObjParam(ME_TTB_MODULELOADED, CMLua::HookEventObjParam, L, ref); lua_pushlightuserdata(L, res); + Hooks.insert(res); + HookRefs.insert(new HandleRefParam(L, res, ref)); + return 1; } diff --git a/plugins/MirLua/src/mlua.cpp b/plugins/MirLua/src/mlua.cpp index 90c5e302c6..3d0d7f6106 100644 --- a/plugins/MirLua/src/mlua.cpp +++ b/plugins/MirLua/src/mlua.cpp @@ -41,9 +41,9 @@ void CMLua::Unload() { mir_writeLogT(hLogger, _T("Unloading lua engine\n")); - KillModuleMenus(hScriptsLangpack); - KillModuleServices(); - KillModuleEventHooks(); + ::KillModuleMenus(hScriptsLangpack); + ::KillModuleServices(); + ::KillModuleEventHooks(); //KillModuleSubclassing if (L) diff --git a/plugins/MirLua/src/stdafx.h b/plugins/MirLua/src/stdafx.h index 6c1f2ad98e..5c2cedb63e 100644 --- a/plugins/MirLua/src/stdafx.h +++ b/plugins/MirLua/src/stdafx.h @@ -59,8 +59,7 @@ extern HANDLE g_hCustomFolderPath; #define CUSTOM_SCRIPTS_PATHT MIRANDA_USERDATA "\\Scripts" #endif -#define MLUA_CORE "m" -LUAMOD_API int (luaopen_m)(lua_State *L); +#include "m_core.h" #define MLUA_CLIST "m_clist" LUAMOD_API int (luaopen_m_clist)(lua_State *L); -- cgit v1.2.3