qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [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).