- Fix hang while inputting mouse message. Fix CORE-9998.

svn path=/trunk/; revision=72054
This commit is contained in:
James Tabor 2016-07-30 12:32:28 +00:00
parent fdff190335
commit 1d66234973

View file

@ -1891,6 +1891,16 @@ filter_contains_hw_range( UINT first, UINT last )
return 1;
}
/* check whether message is in the range of mouse messages */
static inline BOOL is_mouse_message( UINT message )
{
return ( //( message >= WM_NCMOUSEFIRST && message <= WM_NCMOUSELAST ) || This seems to break tests...
( message >= WM_MOUSEFIRST && message <= WM_MOUSELAST ) ||
( message >= WM_XBUTTONDOWN && message <= WM_XBUTTONDBLCLK ) ||
( message >= WM_MBUTTONDOWN && message <= WM_MBUTTONDBLCLK ) ||
( message >= WM_LBUTTONDOWN && message <= WM_RBUTTONDBLCLK ) );
}
BOOL APIENTRY
co_MsqPeekHardwareMessage(IN PTHREADINFO pti,
IN BOOL Remove,
@ -1946,7 +1956,7 @@ co_MsqPeekHardwareMessage(IN PTHREADINFO pti,
if ( ( !Window || // 1
( Window == PWND_BOTTOM && CurrentMessage->Msg.hwnd == NULL ) || // 2
( Window != PWND_BOTTOM && Window->head.h == CurrentMessage->Msg.hwnd ) || // 3
( CurrentMessage->Msg.message == WM_MOUSEMOVE ) ) && // Null window for mouse moves.
( is_mouse_message(CurrentMessage->Msg.message) ) ) && // Null window for anything mouse.
( ( ( MsgFilterLow == 0 && MsgFilterHigh == 0 ) && CurrentMessage->QS_Flags & QSflags ) ||
( MsgFilterLow <= CurrentMessage->Msg.message && MsgFilterHigh >= CurrentMessage->Msg.message ) ) )
{