Commit 7bfd8e62 authored by Jamie Walch's avatar Jamie Walch Committed by Commit Bot

Disable auto-repeat per-connection, not per-key

BUG=899253

Change-Id: I23075d551c70b72babdb1eb180fe920d748523e2
Reviewed-on: https://chromium-review.googlesource.com/c/1302655Reviewed-by: default avatarWez <wez@chromium.org>
Commit-Queue: Jamie Walch <jamiewalch@chromium.org>
Cr-Commit-Position: refs/heads/master@{#603188}
parent c626ad1c
......@@ -302,21 +302,9 @@ void InputInjectorX11::Core::InjectKeyEvent(const KeyEvent& event) {
SetLockStates(caps_lock, num_lock);
}
if (pressed_keys_.empty()) {
// Disable auto-repeat, if necessary, to avoid triggering auto-repeat
// if network congestion delays the key-up event from the client.
saved_auto_repeat_enabled_ = IsAutoRepeatEnabled();
if (saved_auto_repeat_enabled_)
SetAutoRepeatEnabled(false);
}
pressed_keys_.insert(keycode);
} else {
pressed_keys_.erase(keycode);
if (pressed_keys_.empty()) {
// Re-enable auto-repeat, if necessary, when all keys are released.
if (saved_auto_repeat_enabled_)
SetAutoRepeatEnabled(true);
}
}
XTestFakeKeyEvent(display_, keycode, event.pressed(), x11::CurrentTime);
......@@ -644,6 +632,14 @@ void InputInjectorX11::Core::Start(
character_injector_.reset(
new X11CharacterInjector(std::make_unique<X11KeyboardImpl>(display_)));
// Disable auto-repeat, if necessary, to avoid triggering auto-repeat
// if network congestion delays the key-up event from the client. This is
// done for the duration of the session because some window managers do
// not handle changes to this setting efficiently.
saved_auto_repeat_enabled_ = IsAutoRepeatEnabled();
if (saved_auto_repeat_enabled_)
SetAutoRepeatEnabled(false);
}
void InputInjectorX11::Core::Stop() {
......@@ -654,6 +650,9 @@ void InputInjectorX11::Core::Stop() {
clipboard_.reset();
character_injector_.reset();
// Re-enable auto-repeat, if necessary, on disconnect.
if (saved_auto_repeat_enabled_)
SetAutoRepeatEnabled(true);
}
} // namespace
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment