[NtUser]
authorJames Tabor <james.tabor@reactos.org>
Sun, 29 Mar 2015 16:25:50 +0000 (16:25 +0000)
committerJames Tabor <james.tabor@reactos.org>
Sun, 29 Mar 2015 16:25:50 +0000 (16:25 +0000)
- Fix the transfer of a global cursor while using ATI. See CORE-9436.

svn path=/trunk/; revision=66968

reactos/win32ss/user/ntuser/input.c

index 9ac0603..c087b8f 100644 (file)
@@ -523,8 +523,15 @@ UserAttachThreadInput(PTHREADINFO ptiFrom, PTHREADINFO ptiTo, BOOL fAttach)
 
            MsqDestroyMessageQueue(ptiFrom);
 
+           if (CurIcon)
+           {
+              // Could be global. Keep it above the water line!
+              UserReferenceObject(CurIcon);
+           }
+
            if (CurIcon && UserObjectInDestroy(UserHMGetHandle(CurIcon)))
            {
+              UserDereferenceObject(CurIcon);
               CurIcon = NULL;
            }
 
@@ -533,8 +540,8 @@ UserAttachThreadInput(PTHREADINFO ptiFrom, PTHREADINFO ptiTo, BOOL fAttach)
            // Pass cursor From if To is null. Pass test_SetCursor parent_id == current pti ID.
            if (CurIcon && ptiTo->MessageQueue->CursorObject == NULL)
            {
+              ERR("ptiTo receiving ptiFrom Cursor\n");
               ptiTo->MessageQueue->CursorObject = CurIcon;
-              UserReferenceObject(CurIcon);
            }
 
            ptiFrom->MessageQueue->cThreads++;