From 5df94ff719eccd04c7450df35fb5e3f2b36e2ee7 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 13 Jul 2014 10:50:59 +0000 Subject: wrapping the most evident critical sections into a class git-svn-id: http://svn.miranda-ng.org/main/trunk@9785 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Scriver/src/richutil.cpp | 35 +++++++++++++++-------------------- plugins/Scriver/src/sendqueue.cpp | 38 ++++++++++++-------------------------- plugins/Scriver/src/sendqueue.h | 2 -- plugins/Scriver/src/srmm.cpp | 2 -- 4 files changed, 27 insertions(+), 50 deletions(-) (limited to 'plugins/Scriver') diff --git a/plugins/Scriver/src/richutil.cpp b/plugins/Scriver/src/richutil.cpp index 9de434bc9e..7a338492ee 100644 --- a/plugins/Scriver/src/richutil.cpp +++ b/plugins/Scriver/src/richutil.cpp @@ -45,7 +45,7 @@ static int RichUtil_CmpVal(void *p1, void *p2) return (int)((INT_PTR)tp1->hwnd - (INT_PTR)tp2->hwnd); } -static CRITICAL_SECTION csRich; +static mir_cs csRich; static LRESULT CALLBACK RichUtil_Proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); static void RichUtil_ClearUglyBorder(TRichUtil *ru); @@ -54,14 +54,11 @@ void RichUtil_Load(void) { sListInt.increment = 10; sListInt.sortFunc = RichUtil_CmpVal; - - InitializeCriticalSection(&csRich); } void RichUtil_Unload(void) { List_Destroy(&sListInt); - DeleteCriticalSection(&csRich); } int RichUtil_SubClass(HWND hwndEdit) @@ -73,12 +70,11 @@ int RichUtil_SubClass(HWND hwndEdit) ru->hwnd = hwndEdit; ru->hasUglyBorder = 0; - - EnterCriticalSection(&csRich); - if (!List_GetIndex(&sListInt, ru, &idx)) - List_Insert(&sListInt, ru, idx); - LeaveCriticalSection(&csRich); - + { + mir_cslock lck(csRich); + if (!List_GetIndex(&sListInt, ru, &idx)) + List_Insert(&sListInt, ru, idx); + } mir_subclassWindow(ru->hwnd, RichUtil_Proc); RichUtil_ClearUglyBorder(ru); return 1; @@ -93,11 +89,11 @@ static LRESULT CALLBACK RichUtil_Proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM LRESULT ret; tru.hwnd = hwnd; - - EnterCriticalSection(&csRich); - if (List_GetIndex(&sListInt, &tru, &idx)) - ru = (TRichUtil *)sListInt.items[idx]; - LeaveCriticalSection(&csRich); + { + mir_cslock lck(csRich); + if (List_GetIndex(&sListInt, &tru, &idx)) + ru = (TRichUtil *)sListInt.items[idx]; + } switch (msg) { case WM_THEMECHANGED: @@ -182,11 +178,10 @@ static LRESULT CALLBACK RichUtil_Proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM case WM_NCDESTROY: ret = mir_callNextSubclass(hwnd, RichUtil_Proc, msg, wParam, lParam); - - EnterCriticalSection(&csRich); - List_Remove(&sListInt, idx); - LeaveCriticalSection(&csRich); - + { + mir_cslock lck(csRich); + List_Remove(&sListInt, idx); + } mir_free(ru); return ret; } diff --git a/plugins/Scriver/src/sendqueue.cpp b/plugins/Scriver/src/sendqueue.cpp index 6175c87d22..93deeff0e8 100644 --- a/plugins/Scriver/src/sendqueue.cpp +++ b/plugins/Scriver/src/sendqueue.cpp @@ -24,7 +24,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "commonheaders.h" static MessageSendQueueItem *global_sendQueue = NULL; -static CRITICAL_SECTION queueMutex; +static mir_cs queueMutex; TCHAR * GetSendBufferMsg(MessageSendQueueItem *item) { @@ -41,42 +41,28 @@ TCHAR * GetSendBufferMsg(MessageSendQueueItem *item) return szMsg; } -void InitSendQueue() -{ - InitializeCriticalSection(&queueMutex); -} - -void DestroySendQueue() -{ - DeleteCriticalSection(&queueMutex); -} - MessageSendQueueItem* CreateSendQueueItem(HWND hwndSender) { - MessageSendQueueItem *item = (MessageSendQueueItem *) mir_alloc(sizeof(MessageSendQueueItem)); - EnterCriticalSection(&queueMutex); - ZeroMemory(item, sizeof(MessageSendQueueItem)); + MessageSendQueueItem *item = (MessageSendQueueItem*)mir_calloc(sizeof(MessageSendQueueItem)); + + mir_cslock lck(queueMutex); item->hwndSender = hwndSender; item->next = global_sendQueue; - if (global_sendQueue != NULL) { + if (global_sendQueue != NULL) global_sendQueue->prev = item; - } + global_sendQueue = item; - LeaveCriticalSection(&queueMutex); return item; } MessageSendQueueItem* FindOldestPendingSendQueueItem(HWND hwndSender, MCONTACT hContact) { - MessageSendQueueItem *item, *found = NULL; - EnterCriticalSection(&queueMutex); - for (item = global_sendQueue; item != NULL; item = item->next) { - if (item->hwndSender == hwndSender && item->hContact == hContact && item->hwndErrorDlg == NULL) { - found = item; - } - } - LeaveCriticalSection(&queueMutex); - return found; + mir_cslock lck(queueMutex); + for (MessageSendQueueItem *item = global_sendQueue; item != NULL; item = item->next) + if (item->hwndSender == hwndSender && item->hContact == hContact && item->hwndErrorDlg == NULL) + return item; + + return NULL; } MessageSendQueueItem* FindSendQueueItem(MCONTACT hContact, HANDLE hSendId) diff --git a/plugins/Scriver/src/sendqueue.h b/plugins/Scriver/src/sendqueue.h index 688c7bd629..8445a2dbac 100644 --- a/plugins/Scriver/src/sendqueue.h +++ b/plugins/Scriver/src/sendqueue.h @@ -40,8 +40,6 @@ struct MessageSendQueueItem MessageSendQueueItem *prev, *next; }; -void InitSendQueue(); -void DestroySendQueue(); MessageSendQueueItem* CreateSendQueueItem(HWND hwndSender); TCHAR * GetSendBufferMsg(MessageSendQueueItem *item); MessageSendQueueItem* FindOldestPendingSendQueueItem(HWND hwndSender, MCONTACT hContact); diff --git a/plugins/Scriver/src/srmm.cpp b/plugins/Scriver/src/srmm.cpp index 2bfa95c935..4dd628a6f8 100644 --- a/plugins/Scriver/src/srmm.cpp +++ b/plugins/Scriver/src/srmm.cpp @@ -70,13 +70,11 @@ extern "C" __declspec(dllexport) int Load(void) if (IsWinVer7Plus()) CoCreateInstance(CLSID_TaskbarList, NULL, CLSCTX_ALL, IID_ITaskbarList3, (void**)&pTaskbarInterface); - InitSendQueue(); return OnLoadModule(); } extern "C" __declspec(dllexport) int Unload(void) { - DestroySendQueue(); if (pTaskbarInterface) pTaskbarInterface->Release(); return OnUnloadModule(); -- cgit v1.2.3