remove user handle table lock, cursor locks, message queue locks, hook lock Modified: trunk/reactos/subsys/win32k/include/cursoricon.h Modified: trunk/reactos/subsys/win32k/include/hook.h Modified: trunk/reactos/subsys/win32k/include/msgqueue.h Modified: trunk/reactos/subsys/win32k/include/object.h Modified: trunk/reactos/subsys/win32k/misc/object.c Modified: trunk/reactos/subsys/win32k/ntuser/cursoricon.c Modified: trunk/reactos/subsys/win32k/ntuser/focus.c Modified: trunk/reactos/subsys/win32k/ntuser/hook.c Modified: trunk/reactos/subsys/win32k/ntuser/input.c Modified: trunk/reactos/subsys/win32k/ntuser/message.c Modified: trunk/reactos/subsys/win32k/ntuser/msgqueue.c Modified: trunk/reactos/subsys/win32k/ntuser/painting.c Modified: trunk/reactos/subsys/win32k/ntuser/window.c Modified: trunk/reactos/subsys/win32k/ntuser/winsta.c _____
Modified: trunk/reactos/subsys/win32k/include/cursoricon.h --- trunk/reactos/subsys/win32k/include/cursoricon.h 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/include/cursoricon.h 2005-09-05 23:11:41 UTC (rev 17685) @@ -13,7 +13,6 @@
{ LIST_ENTRY ListEntry; HANDLE Self; - FAST_MUTEX Lock; LIST_ENTRY ProcessList; HMODULE hModule; HRSRC hRsrc; @@ -37,7 +36,6 @@ BOOL Enabled; BOOL SwapButtons; UINT ButtonsDown; - FAST_MUTEX CursorMutex; CURSORCLIP_INFO CursorClipInfo; PCURICON_OBJECT CurrentCursorObject; BYTE ShowingCursor; @@ -64,12 +62,6 @@ #define IntReleaseCurIconObject(CurIconObj) \ ObmDereferenceObject(CurIconObj)
-#define IntLockProcessCursorIcons(W32Process) \ - ExAcquireFastMutex(&W32Process->CursorIconListLock) - -#define IntUnLockProcessCursorIcons(W32Process) \ - ExReleaseFastMutex(&W32Process->CursorIconListLock) - #endif /* _WIN32K_CURSORICON_H */
/* EOF */ _____
Modified: trunk/reactos/subsys/win32k/include/hook.h --- trunk/reactos/subsys/win32k/include/hook.h 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/include/hook.h 2005-09-05 23:11:41 UTC (rev 17685) @@ -19,7 +19,6 @@
typedef struct tagHOOKTABLE { - FAST_MUTEX Lock; LIST_ENTRY Hooks[NB_HOOKS]; /* array of hook chains */ UINT Counts[NB_HOOKS]; /* use counts for each hook chain */ } HOOKTABLE, *PHOOKTABLE; @@ -27,12 +26,6 @@ LRESULT FASTCALL co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam); VOID FASTCALL HOOK_DestroyThreadHooks(PETHREAD Thread);
-#define IntLockHookTable(HookTable) \ - ExAcquireFastMutex(&HookTable->Lock) - -#define IntUnLockHookTable(HookTable) \ - ExReleaseFastMutex(&HookTable->Lock) - #endif /* _WIN32K_HOOK_H */
/* EOF */ _____
Modified: trunk/reactos/subsys/win32k/include/msgqueue.h --- trunk/reactos/subsys/win32k/include/msgqueue.h 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/include/msgqueue.h 2005-09-05 23:11:41 UTC (rev 17685) @@ -67,8 +67,6 @@
LIST_ENTRY TimerListHead; /* Lock for the hardware message list. */ KMUTEX HardwareLock; - /* Lock for the queue. */ - FAST_MUTEX Lock; /* Pointer to the current WM_MOUSEMOVE message */ PUSER_MESSAGE MouseMoveMsg; /* True if a WM_QUIT message is pending. */ @@ -216,12 +214,6 @@ LPARAM FASTCALL MsqGetMessageExtraInfo(VOID); VOID STDCALL MsqRemoveWindowMessagesFromQueue(PVOID pWindow); /* F*(&$ headers, will be gone in the rewrite! */
-#define IntLockMessageQueue(MsgQueue) \ - ExAcquireFastMutex(&(MsgQueue)->Lock) - -#define IntUnLockMessageQueue(MsgQueue) \ - ExReleaseFastMutex(&(MsgQueue)->Lock) - #define IntLockHardwareMessageQueue(MsgQueue) \ KeWaitForMutexObject(&(MsgQueue)->HardwareLock, UserRequest, KernelMode, FALSE, NULL)
_____
Modified: trunk/reactos/subsys/win32k/include/object.h --- trunk/reactos/subsys/win32k/include/object.h 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/include/object.h 2005-09-05 23:11:41 UTC (rev 17685) @@ -43,16 +43,9 @@
typedef struct _USER_HANDLE_TABLE { LIST_ENTRY ListHead; - FAST_MUTEX ListLock; } USER_HANDLE_TABLE, *PUSER_HANDLE_TABLE;
-#define ObmpLockHandleTable(HandleTable) \ - ExAcquireFastMutex(&HandleTable->ListLock) - -#define ObmpUnlockHandleTable(HandleTable) \ - ExReleaseFastMutex(&HandleTable->ListLock) - ULONG FASTCALL ObmGetReferenceCount( PVOID ObjectBody); _____
Modified: trunk/reactos/subsys/win32k/misc/object.c --- trunk/reactos/subsys/win32k/misc/object.c 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/misc/object.c 2005-09-05 23:11:41 UTC (rev 17685) @@ -111,8 +111,6 @@
PVOID ObjectBody; ULONG i;
- ObmpLockHandleTable(HandleTable); - CurrentEntry = HandleTable->ListHead.Flink;
while (CurrentEntry != &HandleTable->ListHead) @@ -131,11 +129,8 @@ ObjectHeader->HandleCount--; Current->Handles[i].ObjectBody = NULL;
- ObmpUnlockHandleTable(HandleTable); - ObmDereferenceObject(ObjectBody);
- ObmpLockHandleTable(HandleTable); CurrentEntry = &HandleTable->ListHead; break; } @@ -144,7 +139,6 @@ CurrentEntry = CurrentEntry->Flink; }
- ObmpUnlockHandleTable(HandleTable); }
VOID FASTCALL @@ -177,13 +171,10 @@ PUSER_HANDLE Entry; PVOID ObjectBody;
- ObmpLockHandleTable(HandleTable); - Entry = ObmpGetObjectByHandle(HandleTable, Handle); if (Entry == NULL) { DPRINT1("Invalid handle\n"); - ObmpUnlockHandleTable(HandleTable); return NULL; }
@@ -197,8 +188,6 @@ Entry->ObjectBody = NULL; }
- ObmpUnlockHandleTable(HandleTable); - return ObjectBody; }
@@ -372,8 +361,6 @@ USER_BODY_TO_HEADER(ObjectBody)->HandleCount++; }
- ObmpLockHandleTable(HandleTable); - Handle = 1; Current = HandleTable->ListHead.Flink; /* @@ -390,7 +377,6 @@ if (!Block->Handles[i].ObjectBody) { Block->Handles[i].ObjectBody = ObjectBody; - ObmpUnlockHandleTable(HandleTable); *HandleReturn = (HANDLE)((Handle + i) << 2); return STATUS_SUCCESS; } @@ -415,7 +401,6 @@ RtlZeroMemory(NewBlock, sizeof(USER_HANDLE_BLOCK)); NewBlock->Handles[0].ObjectBody = ObjectBody; InsertTailList(&HandleTable->ListHead, &NewBlock->ListEntry); - ObmpUnlockHandleTable(HandleTable); *HandleReturn = (HANDLE)(Handle << 2);
return STATUS_SUCCESS; @@ -441,21 +426,16 @@ PUSER_HANDLE UserHandle; PVOID ObjectBody;
- ObmpLockHandleTable(HandleTable); - UserHandle = ObmpGetObjectByHandle(HandleTable, Handle);
if ((UserHandle == NULL) || (UserHandle->ObjectBody == NULL)) { - ObmpUnlockHandleTable(HandleTable); return STATUS_UNSUCCESSFUL; }
ObjectBody = UserHandle->ObjectBody; ObmReferenceObjectByPointer(ObjectBody, ObjectType);
- ObmpUnlockHandleTable(HandleTable); - ObjectHeader = USER_BODY_TO_HEADER(ObjectBody);
if ((ObjectType != otUnknown) && (ObjectHeader->Type != ObjectType)) @@ -491,7 +471,6 @@ ObmInitializeHandleTable(PUSER_HANDLE_TABLE HandleTable) { InitializeListHead(&HandleTable->ListHead); - ExInitializeFastMutex(&HandleTable->ListLock); }
VOID FASTCALL _____
Modified: trunk/reactos/subsys/win32k/ntuser/cursoricon.c --- trunk/reactos/subsys/win32k/ntuser/cursoricon.c 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/ntuser/cursoricon.c 2005-09-05 23:11:41 UTC (rev 17685) @@ -43,7 +43,6 @@
static PAGED_LOOKASIDE_LIST ProcessLookasideList; static LIST_ENTRY CurIconList; -static FAST_MUTEX CurIconListLock;
/* Look up the location of the cursor in the GDIDEVICE structure * when all we know is the window station object @@ -305,7 +304,6 @@ 0, 128); InitializeListHead(&CurIconList); - ExInitializeFastMutex(&CurIconListLock);
return TRUE; } @@ -328,7 +326,6 @@
Win32Process = PsGetWin32Process();
- ExAcquireFastMutex(&Object->Lock); Search = Object->ProcessList.Flink; while (Search != &Object->ProcessList) { @@ -336,7 +333,6 @@ if (Current->Process == Win32Process) { /* Already registered for this process */ - ExReleaseFastMutex(&Object->Lock); return TRUE; } Search = Search->Flink; @@ -351,7 +347,6 @@ InsertHeadList(&Object->ProcessList, &Current->ListEntry); Current->Process = Win32Process;
- ExReleaseFastMutex(&Object->Lock); return TRUE; }
@@ -362,8 +357,6 @@ PLIST_ENTRY CurrentEntry; PCURICON_OBJECT Object;
- ExAcquireFastMutex(&CurIconListLock); - CurrentEntry = CurIconList.Flink; while (CurrentEntry != &CurIconList) { @@ -380,18 +373,15 @@ } if (! ReferenceCurIconByProcess(Object)) { - ExReleaseFastMutex(&CurIconListLock); return NULL; } - ExReleaseFastMutex(&CurIconListLock); + return Object; } } ObmDereferenceObject(Object); }
- ExReleaseFastMutex(&CurIconListLock); - return NULL; }
@@ -410,7 +400,6 @@ }
Object->Self = Handle; - ExInitializeFastMutex(&Object->Lock); InitializeListHead(&Object->ProcessList);
if (! ReferenceCurIconByProcess(Object)) @@ -421,9 +410,7 @@ return NULL; }
- ExAcquireFastMutex(&CurIconListLock); InsertHeadList(&CurIconList, &Object->ListEntry); - ExReleaseFastMutex(&CurIconListLock);
ObmDereferenceObject(Object);
@@ -440,8 +427,6 @@ PCURICON_PROCESS Current = NULL; PW32PROCESS W32Process = PsGetWin32Process();
- ExAcquireFastMutex(&Object->Lock); - /* Private objects can only be destroyed by their own process */ if (NULL == Object->hModule) { @@ -449,14 +434,12 @@ Current = CONTAINING_RECORD(Object->ProcessList.Flink, CURICON_PROCESS, ListEntry); if (Current->Process != W32Process) { - ExReleaseFastMutex(&Object->Lock); DPRINT1("Trying to destroy private icon/cursor of another process\n"); return FALSE; } } else if (! ProcessCleanup) { - ExReleaseFastMutex(&Object->Lock); DPRINT("Trying to destroy shared icon/cursor\n"); return FALSE; } @@ -480,17 +463,13 @@ /* If there are still processes referencing this object we can't destroy it yet */ if (! IsListEmpty(&Object->ProcessList)) { - ExReleaseFastMutex(&Object->Lock); return TRUE; }
- ExReleaseFastMutex(&Object->Lock);
if (! ProcessCleanup) { - ExAcquireFastMutex(&CurIconListLock); RemoveEntryList(&Object->ListEntry); - ExReleaseFastMutex(&CurIconListLock); }
CurInfo = IntGetSysCursorInfo(WinStaObject); @@ -536,8 +515,6 @@ return; }
- ExAcquireFastMutex(&CurIconListLock); - CurrentEntry = CurIconList.Flink; while (CurrentEntry != &CurIconList) { @@ -545,29 +522,23 @@ CurrentEntry = CurrentEntry->Flink; if(NT_SUCCESS(ObmReferenceObjectByPointer(Object, otCursorIcon))) { - ExAcquireFastMutex(&Object->Lock); ProcessEntry = Object->ProcessList.Flink; while (ProcessEntry != &Object->ProcessList) { ProcessData = CONTAINING_RECORD(ProcessEntry, CURICON_PROCESS, ListEntry); if (Win32Process == ProcessData->Process) { - ExReleaseFastMutex(&Object->Lock); RemoveEntryList(&Object->ListEntry); IntDestroyCurIconObject(WinStaObject, Object, TRUE); break; } ProcessEntry = ProcessEntry->Flink; } - if (ProcessEntry == &Object->ProcessList) - { - ExReleaseFastMutex(&Object->Lock); - } + ObmDereferenceObject(Object); } }
- ExReleaseFastMutex(&CurIconListLock); ObDereferenceObject(WinStaObject); }
_____
Modified: trunk/reactos/subsys/win32k/ntuser/focus.c --- trunk/reactos/subsys/win32k/ntuser/focus.c 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/ntuser/focus.c 2005-09-05 23:11:41 UTC (rev 17685) @@ -190,18 +190,15 @@
co_IntSendKillFocusMessages(hWndFocusPrev, hWndFocus);
IntSetFocusMessageQueue(Window->MessageQueue); - IntLockMessageQueue(Window->MessageQueue); if (Window->MessageQueue) { Window->MessageQueue->ActiveWindow = hWnd; } - IntUnLockMessageQueue(Window->MessageQueue); - IntLockMessageQueue(FocusWindow->MessageQueue); + if (FocusWindow->MessageQueue) { FocusWindow->MessageQueue->FocusWindow = hWndFocus; } - IntUnLockMessageQueue(FocusWindow->MessageQueue);
if (PrevForegroundQueue != Window->MessageQueue) { @@ -299,9 +296,7 @@
/* FIXME: Call hooks. */
- IntLockMessageQueue(ThreadQueue); ThreadQueue->ActiveWindow = hWnd; - IntUnLockMessageQueue(ThreadQueue);
co_IntSendDeactivateMessages(hWndPrev, hWnd); co_IntSendActivateMessages(hWndPrev, hWnd, FALSE); @@ -326,9 +321,7 @@ return hWndPrev; }
- IntLockMessageQueue(ThreadQueue); ThreadQueue->FocusWindow = hWnd; - IntUnLockMessageQueue(ThreadQueue);
co_IntSendKillFocusMessages(hWndPrev, hWnd); co_IntSendSetFocusMessages(hWndPrev, hWnd); @@ -499,9 +492,7 @@ }
co_IntPostOrSendMessage(hWndPrev, WM_CAPTURECHANGED, 0, (LPARAM)hWnd); - IntLockMessageQueue(ThreadQueue); ThreadQueue->CaptureWindow = hWnd; - IntUnLockMessageQueue(ThreadQueue);
RETURN( hWndPrev);
_____
Modified: trunk/reactos/subsys/win32k/ntuser/hook.c --- trunk/reactos/subsys/win32k/ntuser/hook.c 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/ntuser/hook.c 2005-09-05 23:11:41 UTC (rev 17685) @@ -48,7 +48,6 @@
Table = ExAllocatePoolWithTag(PagedPool, sizeof(HOOKTABLE), TAG_HOOK); if (NULL != Table) { - ExInitializeFastMutex(&Table->Lock); for (i = 0; i < NB_HOOKS; i++) { InitializeListHead(&Table->Hooks[i]); @@ -96,9 +95,7 @@ Hook->HookId = HookId; RtlInitUnicodeString(&Hook->ModuleName, NULL);
- IntLockHookTable(Table); InsertHeadList(&Table->Hooks[HOOKID_TO_INDEX(HookId)], &Hook->Chain); - IntUnLockHookTable(Table);
return Hook; } @@ -132,7 +129,6 @@ PHOOK Hook; PLIST_ENTRY Elem;
- IntLockHookTable(Table); Hook = IntGetFirstHook(Table, HookId); while (NULL != Hook && NULL == Hook->Proc) { @@ -140,7 +136,6 @@ Hook = (Elem == &Table->Hooks[HOOKID_TO_INDEX(HookId)] ? NULL : CONTAINING_RECORD(Elem, HOOK, Chain)); } - IntUnLockHookTable(Table);
return Hook; } @@ -153,18 +148,15 @@ int HookId = Hook->HookId; PLIST_ENTRY Elem;
- IntLockHookTable(Table); Elem = Hook->Chain.Flink; while (Elem != &Table->Hooks[HOOKID_TO_INDEX(HookId)]) { Hook = CONTAINING_RECORD(Elem, HOOK, Chain); if (NULL != Hook->Proc) { - IntUnLockHookTable(Table); return Hook; } } - IntUnLockHookTable(Table);
if (NULL != GlobalHooks && Table != GlobalHooks) /* now search through the global table */ { @@ -203,10 +195,6 @@ return; }
- if (! TableAlreadyLocked) - { - IntLockHookTable(Table); - } if (0 != Table->Counts[HOOKID_TO_INDEX(Hook->HookId)]) { Hook->Proc = NULL; /* chain is in use, just mark it and return */ @@ -215,10 +203,6 @@ { IntFreeHook(Table, Hook, WinStaObj); } - if (! TableAlreadyLocked) - { - IntUnLockHookTable(Table); - } }
/* release a hook chain, removing deleted hooks if the use count drops to 0 */ @@ -233,12 +217,10 @@ return; }
- IntLockHookTable(Table); /* use count shouldn't already be 0 */ ASSERT(0 != Table->Counts[HOOKID_TO_INDEX(HookId)]); if (0 == Table->Counts[HOOKID_TO_INDEX(HookId)]) { - IntUnLockHookTable(Table); return; } if (0 == --Table->Counts[HOOKID_TO_INDEX(HookId)]) @@ -254,7 +236,6 @@ } } } - IntUnLockHookTable(Table); }
static LRESULT FASTCALL @@ -316,14 +297,10 @@ return 0; }
- IntLockHookTable(Table); Table->Counts[HOOKID_TO_INDEX(HookId)]++; - IntUnLockHookTable(Table); if (Table != GlobalHooks && GlobalHooks != NULL) { - IntLockHookTable(GlobalHooks); GlobalHooks->Counts[HOOKID_TO_INDEX(HookId)]++; - IntUnLockHookTable(GlobalHooks); }
Result = co_IntCallHookProc(HookId, Code, wParam, lParam, Hook->Proc, @@ -369,7 +346,7 @@ DPRINT1("Invalid window station????\n"); return; } - IntLockHookTable(GlobalHooks); + for (HookId = WH_MINHOOK; HookId <= WH_MAXHOOK; HookId++) { /* only low-level keyboard/mouse global hooks can be owned by a thread */ @@ -390,7 +367,7 @@ break; } } - IntUnLockHookTable(GlobalHooks); + ObDereferenceObject(WinStaObj); } } _____
Modified: trunk/reactos/subsys/win32k/ntuser/input.c --- trunk/reactos/subsys/win32k/ntuser/input.c 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/ntuser/input.c 2005-09-05 23:11:41 UTC (rev 17685) @@ -930,7 +930,6 @@
SwapButtons = CurInfo->SwapButtons; DoMove = FALSE;
- ExAcquireFastMutex(&CurInfo->CursorMutex); IntGetCursorLocation(WinSta, &MousePos); OrgPos.x = MousePos.x; OrgPos.y = MousePos.y; @@ -981,8 +980,6 @@ DoMove = (MousePos.x != OrgPos.x || MousePos.y != OrgPos.y); }
- ExReleaseFastMutex(&CurInfo->CursorMutex); - if (DoMove) { dc = DC_LockDc(hDC); _____
Modified: trunk/reactos/subsys/win32k/ntuser/message.c --- trunk/reactos/subsys/win32k/ntuser/message.c 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/ntuser/message.c 2005-09-05 23:11:41 UTC (rev 17685) @@ -1745,16 +1745,12 @@
Queue = PsGetWin32Thread()->MessageQueue;
- IntLockMessageQueue(Queue); - Result = MAKELONG(Queue->QueueBits, Queue->ChangedBits); if (ClearChanges) { Queue->ChangedBits = 0; }
- IntUnLockMessageQueue(Queue); - RETURN( Result);
CLEANUP: _____
Modified: trunk/reactos/subsys/win32k/ntuser/msgqueue.c --- trunk/reactos/subsys/win32k/ntuser/msgqueue.c 2005-09-05 22:39:29 UTC (rev 17684) +++ trunk/reactos/subsys/win32k/ntuser/msgqueue.c 2005-09-05 23:11:41 UTC (rev 17685) @@ -77,10 +77,8 @@
return 0;
MessageQueue = Win32Thread->MessageQueue; - IntLockMessageQueue(MessageQueue); MessageQueue->WakeMask = WakeMask; MessageEventHandle = MessageQueue->NewMessagesHandle; - IntUnLockMessageQueue(MessageQueue);
return MessageEventHandle; } @@ -96,9 +94,7 @@ return FALSE;
MessageQueue = Win32Thread->MessageQueue; - IntLockMessageQueue(MessageQueue); MessageQueue->WakeMask = ~0; - IntUnLockMessageQueue(MessageQueue);
return TRUE; } @@ -106,26 +102,22 @@ VOID FASTCALL MsqIncPaintCountQueue(PUSER_MESSAGE_QUEUE Queue) { - IntLockMessageQueue(Queue); Queue->PaintCount++; Queue->PaintPosted = TRUE; Queue->QueueBits |= QS_PAINT; Queue->ChangedBits |= QS_PAINT; if (Queue->WakeMask & QS_PAINT) KeSetEvent(Queue->NewMessages, IO_NO_INCREMENT, FALSE); - IntUnLockMessageQueue(Queue); }
VOID FASTCALL MsqDecPaintCountQueue(PUSER_MESSAGE_QUEUE Queue) { - IntLockMessageQueue(Queue); Queue->PaintCount--; if (Queue->PaintCount == 0) { Queue->PaintPosted = FALSE; } - IntUnLockMessageQueue(Queue); }
@@ -760,12 +752,9 @@ ObmDereferenceObject(Window); ObDereferenceObject (Thread);
-// IntLockMessageQueue(pThread->MessageQueue); // InsertHeadList(&pThread->MessageQueue->PostedMessagesListHead, // &Message->ListEntry); // KeSetEvent(pThread->MessageQueue->NewMessages, IO_NO_INCREMENT, FALSE); -// IntUnLockMessageQueue(pThread->MessageQueue); - }
PUSER_MESSAGE FASTCALL @@ -797,13 +786,11 @@ PLIST_ENTRY ListEntry; PUSER_SENT_MESSAGE_NOTIFY Message;
- IntLockMessageQueue(MessageQueue); while (!IsListEmpty(&MessageQueue->SentMessagesListHead)) { ListEntry = RemoveHeadList(&MessageQueue->SentMessagesListHead); Message = CONTAINING_RECORD(ListEntry, USER_SENT_MESSAGE_NOTIFY, ListEntry); - IntUnLockMessageQueue(MessageQueue);
co_IntCallSentMessageCallback(Message->CompletionCallback, Message->hWnd, @@ -811,9 +798,8 @@ Message->CompletionCallbackContext, Message->Result);
- IntLockMessageQueue(MessageQueue); } - IntUnLockMessageQueue(MessageQueue); + }
BOOLEAN FASTCALL @@ -831,10 +817,8 @@ BOOL SenderReturned; PUSER_SENT_MESSAGE_NOTIFY NotifyMessage;
- IntLockMessageQueue(MessageQueue); if (IsListEmpty(&MessageQueue->SentMessagesListHead)) { - IntUnLockMessageQueue(MessageQueue); return(FALSE); }
@@ -847,8 +831,6 @@ InsertTailList(&MessageQueue->LocalDispatchingMessagesHead, &Message->ListEntry);
- IntUnLockMessageQueue(MessageQueue); - if (Message->HookMessage) { Result = co_HOOK_CallHooks(Message->Msg.message, @@ -867,13 +849,9 @@
/* remove the message from the local dispatching list, because it doesn't need to be cleaned up on thread termination anymore */ - IntLockMessageQueue(MessageQueue); RemoveEntryList(&Message->ListEntry); - IntUnLockMessageQueue(MessageQueue);
/* remove the message from the dispatching list, so lock the sender's message queue */ - IntLockMessageQueue(Message->SenderQueue); - SenderReturned = (Message->DispatchingListEntry.Flink == NULL); if(!SenderReturned) { @@ -895,9 +873,6 @@ KeSetEvent(Message->CompletionEvent, IO_NO_INCREMENT, FALSE); }
- /* unlock the sender's message queue, the safe operation is done */ - IntUnLockMessageQueue(Message->SenderQueue); - /* Notify the sender if they specified a callback. */ if (!SenderReturned && Message->CompletionCallback != NULL) { @@ -942,8 +917,6 @@ MessageQueue = Window->MessageQueue; ASSERT(MessageQueue);
- IntLockMessageQueue(MessageQueue); - /* remove the posted messages for this window */ CurrentEntry = MessageQueue->PostedMessagesListHead.Flink; ListHead = &MessageQueue->PostedMessagesListHead; @@ -973,7 +946,6 @@ ListEntry); if(SentMessage->Msg.hwnd == Window->Self) { - IntLockMessageQueue(SentMessage->SenderQueue); DPRINT("Notify the sender and remove a message from the queue that had not been dispatched\n");
/* remove the message from the dispatching list */ @@ -987,7 +959,6 @@ { KeSetEvent(SentMessage->CompletionEvent, IO_NO_INCREMENT, FALSE); } - IntUnLockMessageQueue(SentMessage->SenderQueue);
/* dereference our and the sender's message queue */ IntDereferenceMessageQueue(MessageQueue); @@ -1003,21 +974,18 @@ CurrentEntry = CurrentEntry->Flink; } } - IntUnLockMessageQueue(MessageQueue); }
VOID FASTCALL MsqSendNotifyMessage(PUSER_MESSAGE_QUEUE MessageQueue, PUSER_SENT_MESSAGE_NOTIFY NotifyMessage) { - IntLockMessageQueue(MessageQueue); InsertTailList(&MessageQueue->NotifyMessagesListHead, &NotifyMessage->ListEntry); MessageQueue->QueueBits |= QS_SENDMESSAGE; MessageQueue->ChangedBits |= QS_SENDMESSAGE; if (MessageQueue->WakeMask & QS_SENDMESSAGE) KeSetEvent(MessageQueue->NewMessages, IO_NO_INCREMENT, FALSE); - IntUnLockMessageQueue(MessageQueue); }
NTSTATUS FASTCALL @@ -1064,14 +1032,10 @@ IntReferenceMessageQueue(MessageQueue);
/* add it to the list of pending messages */ - IntLockMessageQueue(ThreadQueue); InsertTailList(&ThreadQueue->DispatchingMessagesHead, &Message->DispatchingListEntry); - IntUnLockMessageQueue(ThreadQueue);
/* queue it in the destination's message queue */ - IntLockMessageQueue(MessageQueue); InsertTailList(&MessageQueue->SentMessagesListHead, &Message->ListEntry); - IntUnLockMessageQueue(MessageQueue);
MessageQueue->QueueBits |= QS_SENDMESSAGE; MessageQueue->ChangedBits |= QS_SENDMESSAGE; @@ -1095,7 +1059,6 @@ { /* look up if the message has not yet dispatched, if so make sure it can't pass a result and it must not set the completion event anymore */ - IntLockMessageQueue(MessageQueue); Entry = MessageQueue->SentMessagesListHead.Flink; while (Entry != &MessageQueue->SentMessagesListHead) { @@ -1110,11 +1073,9 @@ } Entry = Entry->Flink; } - IntUnLockMessageQueue(MessageQueue);
/* remove from the local dispatching list so the other thread knows, it can't pass a result and it must not set the completion event anymore */ - IntLockMessageQueue(ThreadQueue); Entry = ThreadQueue->DispatchingMessagesHead.Flink; while (Entry != &ThreadQueue->DispatchingMessagesHead) { @@ -1133,7 +1094,6 @@ } Entry = Entry->Flink; } - IntUnLockMessageQueue(ThreadQueue);
DPRINT("MsqSendMessage (blocked) timed out\n"); } @@ -1159,7 +1119,6 @@ { /* look up if the message has not yet been dispatched, if so make sure it can't pass a result and it must not set the completion event anymore */ - IntLockMessageQueue(MessageQueue); Entry = MessageQueue->SentMessagesListHead.Flink; while (Entry != &MessageQueue->SentMessagesListHead) { @@ -1174,11 +1133,9 @@ } Entry = Entry->Flink; } - IntUnLockMessageQueue(MessageQueue);
/* remove from the local dispatching list so the other thread knows, it can't pass a result and it must not set the completion event anymore */ - IntLockMessageQueue(ThreadQueue); Entry = ThreadQueue->DispatchingMessagesHead.Flink; while (Entry != &ThreadQueue->DispatchingMessagesHead) { @@ -1197,7 +1154,6 @@ } Entry = Entry->Flink; } - IntUnLockMessageQueue(ThreadQueue);
DPRINT("MsqSendMessage timed out\n"); break; @@ -1223,27 +1179,23 @@ { return; } - IntLockMessageQueue(MessageQueue); InsertTailList(&MessageQueue->PostedMessagesListHead, &Message->ListEntry); MessageQueue->QueueBits |= MessageBits; MessageQueue->ChangedBits |= MessageBits; if (MessageQueue->WakeMask & MessageBits) KeSetEvent(MessageQueue->NewMessages, IO_NO_INCREMENT, FALSE); - IntUnLockMessageQueue(MessageQueue); }
VOID FASTCALL MsqPostQuitMessage(PUSER_MESSAGE_QUEUE MessageQueue, ULONG ExitCode) { - IntLockMessageQueue(MessageQueue); MessageQueue->QuitPosted = TRUE; MessageQueue->QuitExitCode = ExitCode; MessageQueue->QueueBits |= QS_POSTMESSAGE; MessageQueue->ChangedBits |= QS_POSTMESSAGE; if (MessageQueue->WakeMask & QS_POSTMESSAGE) KeSetEvent(MessageQueue->NewMessages, IO_NO_INCREMENT, FALSE); - IntUnLockMessageQueue(MessageQueue); }
BOOLEAN STDCALL @@ -1266,7 +1218,6 @@ Remove, Message)); }
- IntLockMessageQueue(MessageQueue); CurrentEntry = MessageQueue->PostedMessagesListHead.Flink; ListHead = &MessageQueue->PostedMessagesListHead; while (CurrentEntry != ListHead) @@ -1282,13 +1233,13 @@ { RemoveEntryList(&CurrentMessage->ListEntry); } - IntUnLockMessageQueue(MessageQueue); + *Message = CurrentMessage; return(TRUE); } CurrentEntry = CurrentEntry->Flink; } - IntUnLockMessageQueue(MessageQueue); + return(FALSE); }
@@ -1350,7 +1301,6 @@ InitializeListHead(&MessageQueue->DispatchingMessagesHead); InitializeListHead(&MessageQueue->LocalDispatchingMessagesHead); KeInitializeMutex(&MessageQueue->HardwareLock, 0); - ExInitializeFastMutex(&MessageQueue->Lock); MessageQueue->QuitPosted = FALSE; MessageQueue->QuitExitCode = 0; KeQueryTickCount(&LargeTickCount); @@ -1389,8 +1339,6 @@ PTIMER_ENTRY CurrentTimer; PUSER_SENT_MESSAGE CurrentSentMessage;
- IntLockMessageQueue(MessageQueue); - /* cleanup posted messages */ while (!IsListEmpty(&MessageQueue->PostedMessagesListHead)) { @@ -1407,7 +1355,6 @@ CurrentSentMessage = CONTAINING_RECORD(CurrentEntry, USER_SENT_MESSAGE, ListEntry);
- IntLockMessageQueue(CurrentSentMessage->SenderQueue); DPRINT("Notify the sender and remove a message from the queue that had not been dispatched\n");
/* remove the message from the dispatching list */ @@ -1421,7 +1368,6 @@ { KeSetEvent(CurrentSentMessage->CompletionEvent, IO_NO_INCREMENT, FALSE); } - IntUnLockMessageQueue(CurrentSentMessage->SenderQueue);
/* dereference our and the sender's message queue */ IntDereferenceMessageQueue(MessageQueue); @@ -1447,7 +1393,6 @@ CurrentSentMessage = CONTAINING_RECORD(CurrentEntry, USER_SENT_MESSAGE, ListEntry);
- IntLockMessageQueue(CurrentSentMessage->SenderQueue); /* remove the message from the dispatching list */ if(CurrentSentMessage->DispatchingListEntry.Flink != NULL) { @@ -1461,7 +1406,6 @@ { KeSetEvent(CurrentSentMessage->CompletionEvent, IO_NO_INCREMENT, FALSE); } - IntUnLockMessageQueue(CurrentSentMessage->SenderQueue);
/* dereference our and the sender's message queue */ IntDereferenceMessageQueue(MessageQueue); @@ -1484,7 +1428,6 @@ locked later */ }
- IntUnLockMessageQueue(MessageQueue); }
PUSER_MESSAGE_QUEUE FASTCALL @@ -1698,14 +1641,12 @@ DPRINT("MsqSetTimer queue %p wnd %x id %p period %u timerproc %p msg %d\n", MessageQueue, Wnd, IDEvent, Period, TimerFunc, Msg);
- IntLockMessageQueue(MessageQueue); Timer = RemoveTimer(MessageQueue, Wnd, IDEvent, Msg); if (NULL == Timer) { Timer = ExAllocateFromPagedLookasideList(&TimerLookasideList); if (NULL == Timer) { - IntUnLockMessageQueue(MessageQueue); DPRINT1("Failed to allocate timer entry\n"); return FALSE; } @@ -1733,8 +1674,6 @@ DumpTimerList(MessageQueue); #endif /* ! defined(NDEBUG) */
- IntUnLockMessageQueue(MessageQueue); - [truncated at 1000 lines; 131 more skipped]