summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mannehed <samuel@cendio.se>2020-05-01 20:36:18 +0200
committerGitHub <noreply@github.com>2020-05-01 20:36:18 +0200
commitc9582690ac29919f8f1500aa456b378487cfd486 (patch)
treec9d52536cc0cefda5c54910fb3d8bffdb466259d
parente7fa686f329c3fb9e391387e0fdf28de1241f4a0 (diff)
parent44eb1fe59bdab58ed6bedefe8db5e13a2a487352 (diff)
downloadnovnc-c9582690ac29919f8f1500aa456b378487cfd486.tar.gz
Merge pull request #1352 from uklatt/master
Limit mouse move events to one every 17 mS.
-rw-r--r--core/input/mouse.js16
1 files changed, 15 insertions, 1 deletions
diff --git a/core/input/mouse.js b/core/input/mouse.js
index b00a2e0..344f9a8 100644
--- a/core/input/mouse.js
+++ b/core/input/mouse.js
@@ -11,6 +11,7 @@ import { setCapture, stopEvent, getPointerEvent } from '../util/events.js';
const WHEEL_STEP = 10; // Delta threshold for a mouse wheel step
const WHEEL_STEP_TIMEOUT = 50; // ms
const WHEEL_LINE_HEIGHT = 19;
+const MOUSE_MOVE_DELAY = 17; // Minimum wait (ms) between two mouse moves
export default class Mouse {
constructor(target) {
@@ -22,6 +23,7 @@ export default class Mouse {
this._pos = null;
this._wheelStepXTimer = null;
this._wheelStepYTimer = null;
+ this._oldMouseMoveTime = 0;
this._accumulatedWheelDeltaX = 0;
this._accumulatedWheelDeltaY = 0;
@@ -195,7 +197,19 @@ export default class Mouse {
_handleMouseMove(e) {
this._updateMousePosition(e);
- this.onmousemove(this._pos.x, this._pos.y);
+
+ // Limit mouse move events to one every MOUSE_MOVE_DELAY ms
+ clearTimeout(this.mouseMoveTimer);
+ const newMouseMoveTime = Date.now();
+ if (newMouseMoveTime < this._oldMouseMoveTime + MOUSE_MOVE_DELAY) {
+ this.mouseMoveTimer = setTimeout(this.onmousemove.bind(this),
+ MOUSE_MOVE_DELAY,
+ this._pos.x, this._pos.y);
+ } else {
+ this.onmousemove(this._pos.x, this._pos.y);
+ }
+ this._oldMouseMoveTime = newMouseMoveTime;
+
stopEvent(e);
}