* [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server
@ 2013-04-25 5:29 Lei Li
2013-04-25 5:29 ` [Qemu-devel] [PATCH 1/4] vnc: Add SCROLL lock key to kbd_leds Lei Li
` (5 more replies)
0 siblings, 6 replies; 12+ messages in thread
From: Lei Li @ 2013-04-25 5:29 UTC (permalink / raw)
To: qemu-devel; +Cc: lagarcia, aliguori, kraxel, Lei Li
Hi guys,
This patch series tries to add support for LED state
extension to Qemu VNC server. The proposal has been sent
few days ago as link below:
http://lists.gnu.org/archive/html/qemu-devel/2013-04/msg01421.html
The previous version as link:
http://lists.nongnu.org/archive/html/qemu-devel/2013-04/msg04773.html
Pleae let me know if there is anything else need be improved.
Thanks!
Changes since v3:
- Add adjustment of turning off lock state sync logic in do_key_event()
when VNC_FEATURE_LED_STATE supported suggested by Gerd.
- Document improvement suggested by Eric.
Changes since v2:
- Address the comments from Anthony includes:
- Just send 1 instead of the actual width and height.
- Improve the document by adding the Pseudo-encoding number
and simplify the description of the LED state encoding.
Changes since v1:
- Address the comments from Anthony includes:
- Use Pseudo-encoding for led state;
- Get rid of send_ext_leds_state_ack;
- Add document for the led state Pseudo-encoding.
Lei Li (4):
vnc: Add SCROLL lock key to kbd_leds
vnc: Support for LED state extension
vnc: Adjust lock state sync logic with VNC_FEATURE_LED_STATE
doc: document the Pseudo-encoding of LED state
docs/vnc-ledstate-Pseudo-encoding.txt | 50 +++++++++++++++++++++++++++++
ui/vnc.c | 56 ++++++++++++++++++++++++++++++++-
ui/vnc.h | 3 ++
3 files changed, 108 insertions(+), 1 deletions(-)
create mode 100644 docs/vnc-ledstate-Pseudo-encoding.txt
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 1/4] vnc: Add SCROLL lock key to kbd_leds
2013-04-25 5:29 [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Lei Li
@ 2013-04-25 5:29 ` Lei Li
2013-04-25 5:29 ` [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension Lei Li
` (4 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: Lei Li @ 2013-04-25 5:29 UTC (permalink / raw)
To: qemu-devel; +Cc: lagarcia, aliguori, kraxel, Lei Li
Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com>
---
ui/vnc.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index 8ee66b7..f574962 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1525,10 +1525,11 @@ static void press_key(VncState *vs, int keysym)
static void kbd_leds(void *opaque, int ledstate)
{
VncState *vs = opaque;
- int caps, num;
+ int caps, num, scr;
caps = ledstate & QEMU_CAPS_LOCK_LED ? 1 : 0;
num = ledstate & QEMU_NUM_LOCK_LED ? 1 : 0;
+ scr = ledstate & QEMU_SCROLL_LOCK_LED ? 1 : 0;
if (vs->modifiers_state[0x3a] != caps) {
vs->modifiers_state[0x3a] = caps;
@@ -1536,6 +1537,9 @@ static void kbd_leds(void *opaque, int ledstate)
if (vs->modifiers_state[0x45] != num) {
vs->modifiers_state[0x45] = num;
}
+ if (vs->modifiers_state[0x46] != scr) {
+ vs->modifiers_state[0x46] = scr;
+ }
}
static void do_key_event(VncState *vs, int down, int keycode, int sym)
--
1.7.7.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension
2013-04-25 5:29 [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Lei Li
2013-04-25 5:29 ` [Qemu-devel] [PATCH 1/4] vnc: Add SCROLL lock key to kbd_leds Lei Li
@ 2013-04-25 5:29 ` Lei Li
2013-05-14 11:35 ` Gerd Hoffmann
2013-04-25 5:29 ` [Qemu-devel] [PATCH 3/4] vnc: Adjust lock state sync logic with VNC_FEATURE_LED_STATE Lei Li
` (3 subsequent siblings)
5 siblings, 1 reply; 12+ messages in thread
From: Lei Li @ 2013-04-25 5:29 UTC (permalink / raw)
To: qemu-devel; +Cc: lagarcia, aliguori, kraxel, Lei Li
Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com>
---
ui/vnc.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
ui/vnc.h | 3 +++
2 files changed, 48 insertions(+), 0 deletions(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index f574962..44189d7 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1522,6 +1522,42 @@ static void press_key(VncState *vs, int keysym)
kbd_put_keycode(keycode | SCANCODE_UP);
}
+static int current_led_state(VncState *vs)
+{
+ int ledstate = 0;
+
+ if (vs->modifiers_state[0x46]) {
+ ledstate |= QEMU_SCROLL_LOCK_LED;
+ }
+ if (vs->modifiers_state[0x45]) {
+ ledstate |= QEMU_NUM_LOCK_LED;
+ }
+ if (vs->modifiers_state[0x3a]) {
+ ledstate |= QEMU_CAPS_LOCK_LED;
+ }
+
+ return ledstate;
+}
+
+static void vnc_led_state_change(VncState *vs)
+{
+ int ledstate = 0;
+
+ if (!vnc_has_feature(vs, VNC_FEATURE_LED_STATE)) {
+ return;
+ }
+
+ ledstate = current_led_state(vs);
+ vnc_lock_output(vs);
+ vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE);
+ vnc_write_u8(vs, 0);
+ vnc_write_u16(vs, 1);
+ vnc_framebuffer_update(vs, 0, 0, 1, 1, VNC_ENCODING_LED_STATE);
+ vnc_write_u8(vs, ledstate);
+ vnc_unlock_output(vs);
+ vnc_flush(vs);
+}
+
static void kbd_leds(void *opaque, int ledstate)
{
VncState *vs = opaque;
@@ -1540,6 +1576,11 @@ static void kbd_leds(void *opaque, int ledstate)
if (vs->modifiers_state[0x46] != scr) {
vs->modifiers_state[0x46] = scr;
}
+
+ /* Sending the current led state message to the client */
+ if (ledstate != current_led_state(vs)) {
+ vnc_led_state_change(vs);
+ }
}
static void do_key_event(VncState *vs, int down, int keycode, int sym)
@@ -1893,6 +1934,9 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
case VNC_ENCODING_WMVi:
vs->features |= VNC_FEATURE_WMVI_MASK;
break;
+ case VNC_ENCODING_LED_STATE:
+ vs->features |= VNC_FEATURE_LED_STATE_MASK;
+ break;
case VNC_ENCODING_COMPRESSLEVEL0 ... VNC_ENCODING_COMPRESSLEVEL0 + 9:
vs->tight.compression = (enc & 0x0F);
break;
@@ -1908,6 +1952,7 @@ static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings)
}
vnc_desktop_resize(vs);
check_pointer_type_change(&vs->mouse_mode_notifier, NULL);
+ vnc_led_state_change(vs);
}
static void set_pixel_conversion(VncState *vs)
diff --git a/ui/vnc.h b/ui/vnc.h
index ad1dec2..fea39ad 100644
--- a/ui/vnc.h
+++ b/ui/vnc.h
@@ -384,6 +384,7 @@ enum {
#define VNC_ENCODING_EXT_KEY_EVENT 0XFFFFFEFE /* -258 */
#define VNC_ENCODING_AUDIO 0XFFFFFEFD /* -259 */
#define VNC_ENCODING_TIGHT_PNG 0xFFFFFEFC /* -260 */
+#define VNC_ENCODING_LED_STATE 0XFFFFFEFB /* -261 */
#define VNC_ENCODING_WMVi 0x574D5669
/*****************************************************************************
@@ -422,6 +423,7 @@ enum {
#define VNC_FEATURE_TIGHT_PNG 8
#define VNC_FEATURE_ZRLE 9
#define VNC_FEATURE_ZYWRLE 10
+#define VNC_FEATURE_LED_STATE 11
#define VNC_FEATURE_RESIZE_MASK (1 << VNC_FEATURE_RESIZE)
#define VNC_FEATURE_HEXTILE_MASK (1 << VNC_FEATURE_HEXTILE)
@@ -434,6 +436,7 @@ enum {
#define VNC_FEATURE_TIGHT_PNG_MASK (1 << VNC_FEATURE_TIGHT_PNG)
#define VNC_FEATURE_ZRLE_MASK (1 << VNC_FEATURE_ZRLE)
#define VNC_FEATURE_ZYWRLE_MASK (1 << VNC_FEATURE_ZYWRLE)
+#define VNC_FEATURE_LED_STATE_MASK (1 << VNC_FEATURE_LED_STATE)
/* Client -> Server message IDs */
--
1.7.7.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 3/4] vnc: Adjust lock state sync logic with VNC_FEATURE_LED_STATE
2013-04-25 5:29 [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Lei Li
2013-04-25 5:29 ` [Qemu-devel] [PATCH 1/4] vnc: Add SCROLL lock key to kbd_leds Lei Li
2013-04-25 5:29 ` [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension Lei Li
@ 2013-04-25 5:29 ` Lei Li
2013-04-25 5:29 ` [Qemu-devel] [PATCH 4/4] doc: document the Pseudo-encoding of LED state Lei Li
` (2 subsequent siblings)
5 siblings, 0 replies; 12+ messages in thread
From: Lei Li @ 2013-04-25 5:29 UTC (permalink / raw)
To: qemu-devel; +Cc: lagarcia, aliguori, kraxel, Lei Li
Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com>
---
ui/vnc.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/ui/vnc.c b/ui/vnc.c
index 44189d7..9ffa75b 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -1613,7 +1613,11 @@ static void do_key_event(VncState *vs, int down, int keycode, int sym)
break;
}
+ /* Turn off the lock state sync logic if the client support the led
+ state extension.
+ */
if (down && vs->vd->lock_key_sync &&
+ !vnc_has_feature(vs, VNC_FEATURE_LED_STATE) &&
keycode_is_keypad(vs->vd->kbd_layout, keycode)) {
/* If the numlock state needs to change then simulate an additional
keypress before sending this one. This will happen if the user
@@ -1633,6 +1637,7 @@ static void do_key_event(VncState *vs, int down, int keycode, int sym)
}
if (down && vs->vd->lock_key_sync &&
+ !vnc_has_feature(vs, VNC_FEATURE_LED_STATE) &&
((sym >= 'A' && sym <= 'Z') || (sym >= 'a' && sym <= 'z'))) {
/* If the capslock state needs to change then simulate an additional
keypress before sending this one. This will happen if the user
--
1.7.7.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 4/4] doc: document the Pseudo-encoding of LED state
2013-04-25 5:29 [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Lei Li
` (2 preceding siblings ...)
2013-04-25 5:29 ` [Qemu-devel] [PATCH 3/4] vnc: Adjust lock state sync logic with VNC_FEATURE_LED_STATE Lei Li
@ 2013-04-25 5:29 ` Lei Li
2013-04-25 19:40 ` [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Anthony Liguori
2013-04-29 22:04 ` Anthony Liguori
5 siblings, 0 replies; 12+ messages in thread
From: Lei Li @ 2013-04-25 5:29 UTC (permalink / raw)
To: qemu-devel; +Cc: lagarcia, aliguori, kraxel, Lei Li
Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com>
---
docs/vnc-ledstate-Pseudo-encoding.txt | 50 +++++++++++++++++++++++++++++++++
1 files changed, 50 insertions(+), 0 deletions(-)
create mode 100644 docs/vnc-ledstate-Pseudo-encoding.txt
diff --git a/docs/vnc-ledstate-Pseudo-encoding.txt b/docs/vnc-ledstate-Pseudo-encoding.txt
new file mode 100644
index 0000000..0f124f6
--- /dev/null
+++ b/docs/vnc-ledstate-Pseudo-encoding.txt
@@ -0,0 +1,50 @@
+VNC LED state Pseudo-encoding
+=============================
+
+Introduction
+------------
+
+This document describes the Pseudo-encoding of LED state for RFB which
+is the protocol used in VNC as reference link below:
+
+http://tigervnc.svn.sourceforge.net/viewvc/tigervnc/rfbproto/rfbproto.rst?content-type=text/plain
+
+When accessing a guest by console through VNC, there might be mismatch
+between the lock keys notification LED on the computer running the VNC
+client session and the current status of the lock keys on the guest
+machine.
+
+To solve this problem it attempts to add LED state Pseudo-encoding
+extension to VNC protocol to deal with setting LED state.
+
+Pseudo-encoding
+---------------
+
+This Pseudo-encoding requested by client declares to server that it supports
+LED state extensions to the protocol.
+
+The Pseudo-encoding number for LED state defined as:
+
+======= ===============================================================
+Number Name
+======= ===============================================================
+-261 'LED state Pseudo-encoding'
+======= ===============================================================
+
+LED state Pseudo-encoding
+--------------------------
+
+The LED state Pseudo-encoding describes the encoding of LED state which
+consists of 3 bits, from left to right each bit represents the Caps, Num,
+and Scroll lock key respectively. '1' indicates that the LED should be
+on and '0' should be off.
+
+Some example encodings for it as following:
+
+======= ===============================================================
+Code Description
+======= ===============================================================
+100 CapsLock is on, NumLock and ScrollLock are off
+010 NumLock is on, CapsLock and ScrollLock are off
+111 CapsLock, NumLock and ScrollLock are on
+======= ===============================================================
--
1.7.7.6
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server
2013-04-25 5:29 [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Lei Li
` (3 preceding siblings ...)
2013-04-25 5:29 ` [Qemu-devel] [PATCH 4/4] doc: document the Pseudo-encoding of LED state Lei Li
@ 2013-04-25 19:40 ` Anthony Liguori
2013-04-29 22:04 ` Anthony Liguori
5 siblings, 0 replies; 12+ messages in thread
From: Anthony Liguori @ 2013-04-25 19:40 UTC (permalink / raw)
To: Lei Li, qemu-devel; +Cc: lagarcia, kraxel
Lei Li <lilei@linux.vnet.ibm.com> writes:
> Hi guys,
>
> This patch series tries to add support for LED state
> extension to Qemu VNC server. The proposal has been sent
> few days ago as link below:
>
> http://lists.gnu.org/archive/html/qemu-devel/2013-04/msg01421.html
>
> The previous version as link:
>
> http://lists.nongnu.org/archive/html/qemu-devel/2013-04/msg04773.html
>
> Pleae let me know if there is anything else need be improved.
>
> Thanks!
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
I'll give people some time to take a look before applying but it looks good to me.
Regards,
Anthony Liguori
>
>
> Changes since v3:
> - Add adjustment of turning off lock state sync logic in do_key_event()
> when VNC_FEATURE_LED_STATE supported suggested by Gerd.
> - Document improvement suggested by Eric.
>
> Changes since v2:
> - Address the comments from Anthony includes:
> - Just send 1 instead of the actual width and height.
> - Improve the document by adding the Pseudo-encoding number
> and simplify the description of the LED state encoding.
>
> Changes since v1:
> - Address the comments from Anthony includes:
> - Use Pseudo-encoding for led state;
> - Get rid of send_ext_leds_state_ack;
> - Add document for the led state Pseudo-encoding.
>
> Lei Li (4):
> vnc: Add SCROLL lock key to kbd_leds
> vnc: Support for LED state extension
> vnc: Adjust lock state sync logic with VNC_FEATURE_LED_STATE
> doc: document the Pseudo-encoding of LED state
>
> docs/vnc-ledstate-Pseudo-encoding.txt | 50 +++++++++++++++++++++++++++++
> ui/vnc.c | 56 ++++++++++++++++++++++++++++++++-
> ui/vnc.h | 3 ++
> 3 files changed, 108 insertions(+), 1 deletions(-)
> create mode 100644 docs/vnc-ledstate-Pseudo-encoding.txt
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server
2013-04-25 5:29 [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Lei Li
` (4 preceding siblings ...)
2013-04-25 19:40 ` [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Anthony Liguori
@ 2013-04-29 22:04 ` Anthony Liguori
5 siblings, 0 replies; 12+ messages in thread
From: Anthony Liguori @ 2013-04-29 22:04 UTC (permalink / raw)
To: Lei Li, qemu-devel; +Cc: lagarcia, aliguori, kraxel
Applied. Thanks.
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension
2013-04-25 5:29 ` [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension Lei Li
@ 2013-05-14 11:35 ` Gerd Hoffmann
2013-05-15 6:05 ` Lei Li
0 siblings, 1 reply; 12+ messages in thread
From: Gerd Hoffmann @ 2013-05-14 11:35 UTC (permalink / raw)
To: Lei Li; +Cc: lagarcia, aliguori, Laszlo Ersek, qemu-devel
On 04/25/13 07:29, Lei Li wrote:
> + /* Sending the current led state message to the client */
> + if (ledstate != current_led_state(vs)) {
> + vnc_led_state_change(vs);
> + }
This check never becomes true as the vnc modifier/led state just got
updated to match ledstate ...
cheers,
Gerd
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension
2013-05-14 11:35 ` Gerd Hoffmann
@ 2013-05-15 6:05 ` Lei Li
2013-05-15 6:44 ` Gerd Hoffmann
2013-05-15 6:46 ` Laszlo Ersek
0 siblings, 2 replies; 12+ messages in thread
From: Lei Li @ 2013-05-15 6:05 UTC (permalink / raw)
To: Gerd Hoffmann; +Cc: lagarcia, aliguori, Laszlo Ersek, qemu-devel
On 05/14/2013 07:35 PM, Gerd Hoffmann wrote:
> On 04/25/13 07:29, Lei Li wrote:
>> + /* Sending the current led state message to the client */
>> + if (ledstate != current_led_state(vs)) {
>> + vnc_led_state_change(vs);
>> + }
> This check never becomes true as the vnc modifier/led state just got
> updated to match ledstate ...
Oh... then how about get rid of this check, let vnc_led_state_change send
the current led state message directly?
>
> cheers,
> Gerd
>
--
Lei
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension
2013-05-15 6:05 ` Lei Li
@ 2013-05-15 6:44 ` Gerd Hoffmann
2013-05-15 7:18 ` Lei Li
2013-05-15 6:46 ` Laszlo Ersek
1 sibling, 1 reply; 12+ messages in thread
From: Gerd Hoffmann @ 2013-05-15 6:44 UTC (permalink / raw)
To: Lei Li; +Cc: lagarcia, aliguori, Laszlo Ersek, qemu-devel
On 05/15/13 08:05, Lei Li wrote:
> On 05/14/2013 07:35 PM, Gerd Hoffmann wrote:
>> On 04/25/13 07:29, Lei Li wrote:
>>> + /* Sending the current led state message to the client */
>>> + if (ledstate != current_led_state(vs)) {
>>> + vnc_led_state_change(vs);
>>> + }
>> This check never becomes true as the vnc modifier/led state just got
>> updated to match ledstate ...
>
> Oh... then how about get rid of this check, let vnc_led_state_change send
> the current led state message directly?
Only sending an update if something did actually change makes sense I
think, but you need to check before updating the state, i.e. something
like this:
bool has_changed = ledstate != current_led_state(vs);
[ update modifiers/led state ]
if (has_changed)
vnc_led_state_change()
cheers,
Gerd
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension
2013-05-15 6:05 ` Lei Li
2013-05-15 6:44 ` Gerd Hoffmann
@ 2013-05-15 6:46 ` Laszlo Ersek
1 sibling, 0 replies; 12+ messages in thread
From: Laszlo Ersek @ 2013-05-15 6:46 UTC (permalink / raw)
To: Lei Li; +Cc: lagarcia, aliguori, Gerd Hoffmann, qemu-devel
On 05/15/13 08:05, Lei Li wrote:
> On 05/14/2013 07:35 PM, Gerd Hoffmann wrote:
>> On 04/25/13 07:29, Lei Li wrote:
>>> + /* Sending the current led state message to the client */
>>> + if (ledstate != current_led_state(vs)) {
>>> + vnc_led_state_change(vs);
>>> + }
>> This check never becomes true as the vnc modifier/led state just got
>> updated to match ledstate ...
>
> Oh... then how about get rid of this check, let vnc_led_state_change send
> the current led state message directly?
You could do the comparison and save the result before updating the
modifiers array, and call vnc_led_state_change() in its current
location, dependent on the saved comparison result. Just my two cents.
Laszlo
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension
2013-05-15 6:44 ` Gerd Hoffmann
@ 2013-05-15 7:18 ` Lei Li
0 siblings, 0 replies; 12+ messages in thread
From: Lei Li @ 2013-05-15 7:18 UTC (permalink / raw)
To: Gerd Hoffmann, Laszlo Ersek; +Cc: lagarcia, aliguori, qemu-devel
On 05/15/2013 02:44 PM, Gerd Hoffmann wrote:
> On 05/15/13 08:05, Lei Li wrote:
>> On 05/14/2013 07:35 PM, Gerd Hoffmann wrote:
>>> On 04/25/13 07:29, Lei Li wrote:
>>>> + /* Sending the current led state message to the client */
>>>> + if (ledstate != current_led_state(vs)) {
>>>> + vnc_led_state_change(vs);
>>>> + }
>>> This check never becomes true as the vnc modifier/led state just got
>>> updated to match ledstate ...
>> Oh... then how about get rid of this check, let vnc_led_state_change send
>> the current led state message directly?
> Only sending an update if something did actually change makes sense I
> think, but you need to check before updating the state, i.e. something
> like this:
>
> bool has_changed = ledstate != current_led_state(vs);
>
> [ update modifiers/led state ]
>
> if (has_changed)
> vnc_led_state_change()
I see. Thanks for your very good suggestions!
I'll send the fix soon.
> cheers,
> Gerd
>
>
--
Lei
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2013-05-15 7:18 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-25 5:29 [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Lei Li
2013-04-25 5:29 ` [Qemu-devel] [PATCH 1/4] vnc: Add SCROLL lock key to kbd_leds Lei Li
2013-04-25 5:29 ` [Qemu-devel] [PATCH 2/4] vnc: Support for LED state extension Lei Li
2013-05-14 11:35 ` Gerd Hoffmann
2013-05-15 6:05 ` Lei Li
2013-05-15 6:44 ` Gerd Hoffmann
2013-05-15 7:18 ` Lei Li
2013-05-15 6:46 ` Laszlo Ersek
2013-04-25 5:29 ` [Qemu-devel] [PATCH 3/4] vnc: Adjust lock state sync logic with VNC_FEATURE_LED_STATE Lei Li
2013-04-25 5:29 ` [Qemu-devel] [PATCH 4/4] doc: document the Pseudo-encoding of LED state Lei Li
2013-04-25 19:40 ` [Qemu-devel] [PATCH 0/4 v4] Support for LED state extension to Qemu VNC server Anthony Liguori
2013-04-29 22:04 ` Anthony Liguori
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).