st/nine: Avoid redundant SetCursorPos calls

For some applications SetCursorPosition
is called when a cursor event is received.

Our SetCursorPosition was always calling
wine SetCursorPos which would trigger
a cursor event.

The infinite loop is avoided by not calling
SetCursorPos when the position hasn't changed.
Found thanks to wine tests.

Fixes irresponsive GUI for some applications.

Fixes: https://github.com/iXit/Mesa-3D/issues/173

Signed-off-by: Axel Davy <davyaxel0@gmail.com>
CC: <mesa-stable@lists.freedesktop.org>
This commit is contained in:
Axel Davy 2018-09-15 21:32:53 +02:00
parent 112c770597
commit dcfde02bb0

View file

@ -791,6 +791,10 @@ NineDevice9_SetCursorPosition( struct NineDevice9 *This,
DBG("This=%p X=%d Y=%d Flags=%d\n", This, X, Y, Flags);
if (This->cursor.pos.x == X &&
This->cursor.pos.y == Y)
return;
This->cursor.pos.x = X;
This->cursor.pos.y = Y;