/* Call GDI to set the new screen cursor */
#ifdef NEW_CURSORICON
GreSetPointerShape(hdcScreen,
- NewCursor->aFrame[0].hbmMask,
- NewCursor->aFrame[0].hbmColor,
- NewCursor->ptlHotspot.x,
- NewCursor->ptlHotspot.y,
+ NewCursor->hbmAlpha ? NULL : NewCursor->hbmMask,
+ NewCursor->hbmAlpha ? NewCursor->hbmAlpha : NewCursor->hbmColor,
+ NewCursor->xHotspot,
+ NewCursor->yHotspot,
gpsi->ptCursor.x,
- gpsi->ptCursor.y);
+ gpsi->ptCursor.y,
+ NewCursor->hbmAlpha ? SPS_ALPHA : 0);
#else
GreSetPointerShape(hdcScreen,
NewCursor->IconInfo.hbmMask,
NewCursor->IconInfo.xHotspot,
NewCursor->IconInfo.yHotspot,
gpsi->ptCursor.x,
- gpsi->ptCursor.y);
+ gpsi->ptCursor.y,
+ 0);
#endif
}
else /* Note: OldCursor != NewCursor so we have to hide cursor */
{
/* Call GDI to set the new screen cursor */
#ifdef NEW_CURSORICON
- GreSetPointerShape(hdcScreen,
- MessageQueue->CursorObject->aFrame[0].hbmMask,
- MessageQueue->CursorObject->aFrame[0].hbmColor,
- MessageQueue->CursorObject->ptlHotspot.x,
- MessageQueue->CursorObject->ptlHotspot.y,
- gpsi->ptCursor.x,
- gpsi->ptCursor.y);
+ GreSetPointerShape(hdcScreen,
+ MessageQueue->CursorObject->hbmAlpha ?
+ NULL : MessageQueue->CursorObject->hbmMask,
+ MessageQueue->CursorObject->hbmAlpha ?
+ MessageQueue->CursorObject->hbmAlpha : MessageQueue->CursorObject->hbmColor,
+ MessageQueue->CursorObject->xHotspot,
+ MessageQueue->CursorObject->yHotspot,
+ gpsi->ptCursor.x,
+ gpsi->ptCursor.y,
+ MessageQueue->CursorObject->hbmAlpha ? SPS_ALPHA : 0);
#else
GreSetPointerShape(hdcScreen,
MessageQueue->CursorObject->IconInfo.hbmMask,
MessageQueue->CursorObject->IconInfo.xHotspot,
MessageQueue->CursorObject->IconInfo.yHotspot,
gpsi->ptCursor.x,
- gpsi->ptCursor.y);
+ gpsi->ptCursor.y,
+ 0);
#endif
} else
GreMovePointer(hdcScreen, Msg->pt.x, Msg->pt.y);
else
{
TRACE("Posting mouse message to hwnd=0x%x!\n", UserHMGetHandle(pwnd));
- MsqPostMessage(MessageQueue, Msg, TRUE, QS_MOUSEBUTTON);
+ MsqPostMessage(MessageQueue, Msg, TRUE, QS_MOUSEBUTTON, 0);
}
}
else if (hdcScreen)
KeQueryTickCount(&LargeTickCount);
Mesg.time = MsqCalculateMessageTime(&LargeTickCount);
Mesg.pt = gpsi->ptCursor;
- MsqPostMessage(Window->head.pti->MessageQueue, &Mesg, FALSE, Type);
+ MsqPostMessage(Window->head.pti->MessageQueue, &Mesg, FALSE, Type, 0);
UserDereferenceObject(Window);
ObDereferenceObject (Thread);
}
VOID FASTCALL
-MsqPostMessage(PUSER_MESSAGE_QUEUE MessageQueue, MSG* Msg, BOOLEAN HardwareMessage,
- DWORD MessageBits)
+MsqPostMessage(PUSER_MESSAGE_QUEUE MessageQueue,
+ MSG* Msg,
+ BOOLEAN HardwareMessage,
+ DWORD MessageBits,
+ DWORD dwQEvent)
{
PUSER_MESSAGE Message;
return;
}
- if(!HardwareMessage)
+ if (dwQEvent)
+ {
+ InsertHeadList(&MessageQueue->PostedMessagesListHead,
+ &Message->ListEntry);
+ }
+ else if (!HardwareMessage)
{
InsertTailList(&MessageQueue->PostedMessagesListHead,
&Message->ListEntry);
&Message->ListEntry);
}
+ Message->dwQEvent = dwQEvent;
Message->QS_Flags = MessageBits;
+ //Message->pti = pti; Fixed in ATI changes. See CORE-6551
MsqWakeQueue(MessageQueue, MessageBits, (MessageBits & QS_TIMER ? FALSE : TRUE));
}