mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 09:24:11 +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:
parent
71f55db0d5
commit
dfb39c9849
|
@ -399,8 +399,6 @@ Win32kThreadCallback(struct _ETHREAD *Thread,
|
||||||
/* Do now some process cleanup that requires a valid win32 thread */
|
/* Do now some process cleanup that requires a valid win32 thread */
|
||||||
if(ptiCurrent->ppi->cThreads == 0)
|
if(ptiCurrent->ppi->cThreads == 0)
|
||||||
{
|
{
|
||||||
UserSetCursor(NULL, TRUE);
|
|
||||||
|
|
||||||
/* Check if we have registered the user api hook */
|
/* Check if we have registered the user api hook */
|
||||||
if(ptiCurrent->ppi == ppiUahServer)
|
if(ptiCurrent->ppi == ppiUahServer)
|
||||||
{
|
{
|
||||||
|
|
|
@ -2094,9 +2094,19 @@ MsqCleanupMessageQueue(PUSER_MESSAGE_QUEUE MessageQueue)
|
||||||
{
|
{
|
||||||
PCURICON_OBJECT pCursor = MessageQueue->CursorObject;
|
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)
|
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);
|
UserDereferenceObject(pCursor);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue