Forgot to change the client to handle relative moves.
This commit is contained in:
parent
fddf7d04a3
commit
0f45face21
|
@ -35,6 +35,11 @@ CServerProxy::CServerProxy(CClient* client, IStream* stream) :
|
||||||
m_timer(NULL),
|
m_timer(NULL),
|
||||||
m_seqNum(0),
|
m_seqNum(0),
|
||||||
m_compressMouse(false),
|
m_compressMouse(false),
|
||||||
|
m_compressMouseRelative(false),
|
||||||
|
m_xMouse(0),
|
||||||
|
m_yMouse(0),
|
||||||
|
m_dxMouse(0),
|
||||||
|
m_dyMouse(0),
|
||||||
m_ignoreMouse(false),
|
m_ignoreMouse(false),
|
||||||
m_heartRate(0.0),
|
m_heartRate(0.0),
|
||||||
m_parser(&CServerProxy::parseHandshakeMessage)
|
m_parser(&CServerProxy::parseHandshakeMessage)
|
||||||
|
@ -189,6 +194,10 @@ CServerProxy::parseMessage(const UInt8* code)
|
||||||
mouseMove();
|
mouseMove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (memcmp(code, kMsgDMouseRelMove, 4) == 0) {
|
||||||
|
mouseRelativeMove();
|
||||||
|
}
|
||||||
|
|
||||||
else if (memcmp(code, kMsgDMouseWheel, 4) == 0) {
|
else if (memcmp(code, kMsgDMouseWheel, 4) == 0) {
|
||||||
mouseWheel();
|
mouseWheel();
|
||||||
}
|
}
|
||||||
|
@ -311,6 +320,12 @@ CServerProxy::flushCompressedMouse()
|
||||||
m_compressMouse = false;
|
m_compressMouse = false;
|
||||||
m_client->mouseMove(m_xMouse, m_yMouse);
|
m_client->mouseMove(m_xMouse, m_yMouse);
|
||||||
}
|
}
|
||||||
|
if (m_compressMouseRelative) {
|
||||||
|
m_compressMouseRelative = false;
|
||||||
|
m_client->mouseRelativeMove(m_dxMouse, m_dyMouse);
|
||||||
|
m_dxMouse = 0;
|
||||||
|
m_dyMouse = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -442,8 +457,11 @@ CServerProxy::enter()
|
||||||
LOG((CLOG_DEBUG1 "recv enter, %d,%d %d %04x", x, y, seqNum, mask));
|
LOG((CLOG_DEBUG1 "recv enter, %d,%d %d %04x", x, y, seqNum, mask));
|
||||||
|
|
||||||
// discard old compressed mouse motion, if any
|
// discard old compressed mouse motion, if any
|
||||||
m_compressMouse = false;
|
m_compressMouse = false;
|
||||||
m_seqNum = seqNum;
|
m_compressMouseRelative = false;
|
||||||
|
m_dxMouse = 0;
|
||||||
|
m_dyMouse = 0;
|
||||||
|
m_seqNum = seqNum;
|
||||||
|
|
||||||
// forward
|
// forward
|
||||||
m_client->enter(x, y, seqNum, static_cast<KeyModifierMask>(mask), false);
|
m_client->enter(x, y, seqNum, static_cast<KeyModifierMask>(mask), false);
|
||||||
|
@ -619,9 +637,12 @@ CServerProxy::mouseMove()
|
||||||
|
|
||||||
// if compressing then ignore the motion but record it
|
// if compressing then ignore the motion but record it
|
||||||
if (m_compressMouse) {
|
if (m_compressMouse) {
|
||||||
ignore = true;
|
m_compressMouseRelative = false;
|
||||||
m_xMouse = x;
|
ignore = true;
|
||||||
m_yMouse = y;
|
m_xMouse = x;
|
||||||
|
m_yMouse = y;
|
||||||
|
m_dxMouse = 0;
|
||||||
|
m_dyMouse = 0;
|
||||||
}
|
}
|
||||||
LOG((CLOG_DEBUG2 "recv mouse move %d,%d", x, y));
|
LOG((CLOG_DEBUG2 "recv mouse move %d,%d", x, y));
|
||||||
|
|
||||||
|
@ -631,6 +652,36 @@ CServerProxy::mouseMove()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
CServerProxy::mouseRelativeMove()
|
||||||
|
{
|
||||||
|
// parse
|
||||||
|
bool ignore;
|
||||||
|
SInt16 dx, dy;
|
||||||
|
CProtocolUtil::readf(m_stream, kMsgDMouseRelMove + 4, &dx, &dy);
|
||||||
|
|
||||||
|
// note if we should ignore the move
|
||||||
|
ignore = m_ignoreMouse;
|
||||||
|
|
||||||
|
// compress mouse motion events if more input follows
|
||||||
|
if (!ignore && !m_compressMouseRelative && m_stream->isReady()) {
|
||||||
|
m_compressMouseRelative = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if compressing then ignore the motion but record it
|
||||||
|
if (m_compressMouseRelative) {
|
||||||
|
ignore = true;
|
||||||
|
m_dxMouse += dx;
|
||||||
|
m_dyMouse += dy;
|
||||||
|
}
|
||||||
|
LOG((CLOG_DEBUG2 "recv mouse relative move %d,%d", dx, dy));
|
||||||
|
|
||||||
|
// forward
|
||||||
|
if (!ignore) {
|
||||||
|
m_client->mouseRelativeMove(dx, dy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CServerProxy::mouseWheel()
|
CServerProxy::mouseWheel()
|
||||||
{
|
{
|
||||||
|
|
|
@ -80,6 +80,7 @@ private:
|
||||||
void mouseDown();
|
void mouseDown();
|
||||||
void mouseUp();
|
void mouseUp();
|
||||||
void mouseMove();
|
void mouseMove();
|
||||||
|
void mouseRelativeMove();
|
||||||
void mouseWheel();
|
void mouseWheel();
|
||||||
void screensaver();
|
void screensaver();
|
||||||
void resetOptions();
|
void resetOptions();
|
||||||
|
@ -97,7 +98,9 @@ private:
|
||||||
UInt32 m_seqNum;
|
UInt32 m_seqNum;
|
||||||
|
|
||||||
bool m_compressMouse;
|
bool m_compressMouse;
|
||||||
|
bool m_compressMouseRelative;
|
||||||
SInt32 m_xMouse, m_yMouse;
|
SInt32 m_xMouse, m_yMouse;
|
||||||
|
SInt32 m_dxMouse, m_dyMouse;
|
||||||
|
|
||||||
bool m_ignoreMouse;
|
bool m_ignoreMouse;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue