[Spice-commits] src/channel-inputs.c

Frediano Ziglio fziglio at kemper.freedesktop.org
Wed Sep 7 12:14:05 UTC 2016


 src/channel-inputs.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

New commits:
commit 73cd553fb0fbd213b64d72f8b4289ed8a17fc6c0
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Wed Sep 7 11:56:36 2016 +0100

    Ignore modifiers messages if no modifiers changed
    
    This avoid keep sending modifiers changes if guest is not
    synchronising the changes.
    
    I consider this as an improving as this avoids client to try again
    and again to force synchronisation however this does not prevent
    every unwanted keystroke insertion which possibly can be a real
    problem on some configurations.
    
    For instance if guest do not handle caps lock as the client do
    if client uses another modifiers (as num lock) this can force
    inserting virtual caps keypress.
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Marc-André Lureau <mlureau at redhat.com>

diff --git a/src/channel-inputs.c b/src/channel-inputs.c
index 7572bff..f79bc38 100644
--- a/src/channel-inputs.c
+++ b/src/channel-inputs.c
@@ -242,8 +242,10 @@ static void inputs_handle_modifiers(SpiceChannel *channel, SpiceMsgIn *in)
     SpiceInputsChannelPrivate *c = SPICE_INPUTS_CHANNEL(channel)->priv;
     SpiceMsgInputsKeyModifiers *modifiers = spice_msg_in_parsed(in);
 
-    c->modifiers = modifiers->modifiers;
-    g_coroutine_signal_emit(channel, signals[SPICE_INPUTS_MODIFIERS], 0);
+    if (c->modifiers != modifiers->modifiers) {
+        c->modifiers = modifiers->modifiers;
+        g_coroutine_signal_emit(channel, signals[SPICE_INPUTS_MODIFIERS], 0);
+    }
 }
 
 /* coroutine context */


More information about the Spice-commits mailing list