/*
- * @unimplemented
+ * @implemented
*/
DWORD
WINAPI
RealGetQueueStatus(UINT flags)
{
- DWORD ret;
- WORD changed_bits, wake_bits;
-
-#if 0 /* wine stuff. don't know what it does... */
-
- /* check for pending X events */
- if (USER_Driver.pMsgWaitForMultipleObjectsEx)
- USER_Driver.pMsgWaitForMultipleObjectsEx( 0, NULL, 0, 0, 0 );
-#endif
-
- ret = NtUserCallOneParam(TRUE, ONEPARAM_ROUTINE_GETQUEUESTATUS);
-
- changed_bits = LOWORD(ret);
- wake_bits = HIWORD(ret);
-
- return MAKELONG(changed_bits & flags, wake_bits & flags);
+ return NtUserCallOneParam(flags, ONEPARAM_ROUTINE_GETQUEUESTATUS);
}
/*
- * @unimplemented
+ * @implemented
*/
BOOL WINAPI GetInputState(VOID)
{
- DWORD ret;
- WORD wake_bits;
-
-#if 0 /* wine stuff. don't know what it does... */
-
- /* check for pending X events */
- if (USER_Driver.pMsgWaitForMultipleObjectsEx)
- USER_Driver.pMsgWaitForMultipleObjectsEx( 0, NULL, 0, 0, 0 );
-#endif
-
- ret = NtUserCallOneParam(FALSE, ONEPARAM_ROUTINE_GETQUEUESTATUS);
-
- wake_bits = HIWORD(ret);
+ PCLIENTTHREADINFO pcti = GetWin32ClientInfo()->pClientThreadInfo;
- return wake_bits & (QS_KEY | QS_MOUSEBUTTON);
+ if ((!pcti) || (pcti->fsChangeBits & (QS_KEY|QS_MOUSEBUTTON)))
+ return (BOOL)NtUserGetThreadState(THREADSTATE_GETINPUTSTATE);
+
+ return FALSE;
}
THREADSTATE_CAPTUREWINDOW,
THREADSTATE_PROGMANWINDOW,
THREADSTATE_TASKMANWINDOW,
- THREADSTATE_GETMESSAGETIME
+ THREADSTATE_GETMESSAGETIME,
+ THREADSTATE_GETINPUTSTATE
};
DWORD
RETURN (UserRealizePalette((HDC) Param));
case ONEPARAM_ROUTINE_GETQUEUESTATUS:
- RETURN (IntGetQueueStatus((BOOL) Param));
-
+ {
+ DWORD Ret;
+ WORD changed_bits, wake_bits;
+ Ret = IntGetQueueStatus(FALSE);
+ changed_bits = LOWORD(Ret);
+ wake_bits = HIWORD(Ret);
+ RETURN( MAKELONG(changed_bits & Param, wake_bits & Param));
+ }
case ONEPARAM_ROUTINE_ENUMCLIPBOARDFORMATS:
/* FIXME: Should use UserEnterShared */
RETURN(IntEnumClipboardFormats(Param));