vnc: Make ledstate comparison before modifiers updated
The ledstate should be compared before modifiers updated, otherwise the ledstate would be the same as current_led_state. Reported-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Message-id: 1368606040-11950-1-git-send-email-lilei@linux.vnet.ibm.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
800ced8cac
commit
1483adcf6a
3
ui/vnc.c
3
ui/vnc.c
@ -1601,6 +1601,7 @@ static void kbd_leds(void *opaque, int ledstate)
|
|||||||
{
|
{
|
||||||
VncState *vs = opaque;
|
VncState *vs = opaque;
|
||||||
int caps, num, scr;
|
int caps, num, scr;
|
||||||
|
bool has_changed = (ledstate != current_led_state(vs));
|
||||||
|
|
||||||
caps = ledstate & QEMU_CAPS_LOCK_LED ? 1 : 0;
|
caps = ledstate & QEMU_CAPS_LOCK_LED ? 1 : 0;
|
||||||
num = ledstate & QEMU_NUM_LOCK_LED ? 1 : 0;
|
num = ledstate & QEMU_NUM_LOCK_LED ? 1 : 0;
|
||||||
@ -1617,7 +1618,7 @@ static void kbd_leds(void *opaque, int ledstate)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Sending the current led state message to the client */
|
/* Sending the current led state message to the client */
|
||||||
if (ledstate != current_led_state(vs)) {
|
if (has_changed) {
|
||||||
vnc_led_state_change(vs);
|
vnc_led_state_change(vs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user