浏览代码

Properly sync LED state on connect

We should start by getting the remote end in sync with the actual
keyboard state. This would work randomly before depending on if we
got the first LED state message before or after we got focus.
tags/v1.8.90
Pierre Ossman 6 年前
父节点
当前提交
609a9c89e9
共有 2 个文件被更改,包括 12 次插入0 次删除
  1. 10
    0
      vncviewer/Viewport.cxx
  2. 2
    0
      vncviewer/Viewport.h

+ 10
- 0
vncviewer/Viewport.cxx 查看文件

@@ -118,6 +118,7 @@ Viewport::Viewport(int w, int h, const rfb::PixelFormat& serverPF, CConn* cc_)
#ifdef WIN32
altGrArmed(false),
#endif
firstLEDState(true),
pendingServerCutText(NULL), pendingClientCutText(NULL),
menuCtrlKey(false), menuAltKey(false), cursor(NULL)
{
@@ -321,6 +322,15 @@ 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
if (firstLEDState) {
firstLEDState = false;
pushLEDState();
return;
}

if (!hasFocus())
return;


+ 2
- 0
vncviewer/Viewport.h 查看文件

@@ -112,6 +112,8 @@ private:
unsigned int altGrCtrlTime;
#endif

bool firstLEDState;

const char* pendingServerCutText;
const char* pendingClientCutText;


正在加载...
取消
保存