mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-08-28 19:26:16 +00:00
[WIN32K]
- Do not call UserSetCursor in MsqCleanupMessageQueue because it uses current thread queue instead of queue in cleanup (they can be different). See issue #6530 for more details. svn path=/trunk/; revision=54051
This commit is contained in:
@@ -399,8 +399,6 @@ Win32kThreadCallback(struct _ETHREAD *Thread,
|
||||
/* Do now some process cleanup that requires a valid win32 thread */
|
||||
if(ptiCurrent->ppi->cThreads == 0)
|
||||
{
|
||||
UserSetCursor(NULL, TRUE);
|
||||
|
||||
/* Check if we have registered the user api hook */
|
||||
if(ptiCurrent->ppi == ppiUahServer)
|
||||
{
|
||||
|
||||
@@ -2094,9 +2094,19 @@ MsqCleanupMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue)
|
||||
{
|
||||
PCURICON_OBJECT pCursor = MessageQueue->CursorObject;
|
||||
|
||||
/* Change to another cursor if we going to dereference current one */
|
||||
/* Change to another cursor if we going to dereference current one
|
||||
Note: we can't use UserSetCursor because it uses current thread
|
||||
message queue instead of queue given for cleanup */
|
||||
if (IntGetSysCursorInfo()->CurrentCursorObject == pCursor)
|
||||
UserSetCursor(NULL, TRUE);
|
||||
{
|
||||
HDC hdcScreen;
|
||||
|
||||
/* Get the screen DC */
|
||||
hdcScreen = IntGetScreenDC();
|
||||
if (hdcScreen)
|
||||
GreMovePointer(hdcScreen, -1, -1);
|
||||
IntGetSysCursorInfo()->CurrentCursorObject = NULL;
|
||||
}
|
||||
|
||||
UserDereferenceObject(pCursor);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user