[client] handle pointer visibility properly

This commit is contained in:
Geoffrey McRae 2020-01-09 21:18:35 +11:00
parent 2d755a45e0
commit 6f551c770c
2 changed files with 32 additions and 48 deletions

View File

@ -1 +1 @@
B1-61-g7a98a886b6+1
B1-62-g2d755a45e0+1

View File

@ -279,22 +279,11 @@ static int cursorThread(void * unused)
KVMFRCursor * cursor = (KVMFRCursor *)msg.mem;
state.cursor.x = cursor->x;
state.cursor.y = cursor->y;
state.cursorVisible = cursor->visible;
state.haveCursorPos = true;
// if this was only a move event
if (msg.udata == 0)
if (msg.udata == 1)
{
state.lgr->on_mouse_event
(
state.lgrData,
state.cursorVisible,
state.cursor.x,
state.cursor.y
);
lgmpClientMessageDone(queue);
continue;
}
switch(cursor->type)
{
case CURSOR_TYPE_COLOR : cursorType = LG_CURSOR_COLOR ; break;
@ -320,13 +309,9 @@ static int cursorThread(void * unused)
lgmpClientMessageDone(queue);
continue;
}
}
bool showCursor = cursor->visible;
lgmpClientMessageDone(queue);
if (showCursor != state.cursorVisible)
{
state.cursorVisible = showCursor;
state.lgr->on_mouse_event
(
state.lgrData,
@ -335,7 +320,6 @@ static int cursorThread(void * unused)
state.cursor.y
);
}
}
lgmpClientUnsubscribe(&queue);
state.running = false;