]> source.dussan.org Git - tigervnc.git/commitdiff
Only do initial LED sync if focused
authorPierre Ossman <ossman@cendio.se>
Thu, 28 Feb 2019 09:57:40 +0000 (10:57 +0100)
committerPierre Ossman <ossman@cendio.se>
Thu, 28 Feb 2019 09:57:40 +0000 (10:57 +0100)
We always sync when we get focus, so this code path is really only
for when the server announces LED state support after we already
have focus.

Make sure we only handle this specific scenario as otherwise we
could end up syncing twice, which just toggles things back and forth
and ends up syncing incorrectly.

vncviewer/Viewport.cxx

index 425cb9f2047b6e978dfdd74acba14089851af93f..4e0044c9855c948ce290eb18112e803632b4b85e 100644 (file)
@@ -323,11 +323,13 @@ void Viewport::setLEDState(unsigned int state)
   vlog.debug("Got server LED state: 0x%08x", state);
 
   // The first message is just considered to be the server announcing
-  // support for this extension, so start by pushing our state to the
-  // remote end to get things in sync
+  // support for this extension. We will push our state to sync up the
+  // server when we get focus. If we already have focus we need to push
+  // it here though.
   if (firstLEDState) {
     firstLEDState = false;
-    pushLEDState();
+    if (hasFocus())
+      pushLEDState();
     return;
   }