diff options
Diffstat (limited to 'kde-plasma/plasma-desktop/files/plasma-desktop-5.20.5-compress-new-input-notifications.patch')
-rw-r--r-- | kde-plasma/plasma-desktop/files/plasma-desktop-5.20.5-compress-new-input-notifications.patch | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/kde-plasma/plasma-desktop/files/plasma-desktop-5.20.5-compress-new-input-notifications.patch b/kde-plasma/plasma-desktop/files/plasma-desktop-5.20.5-compress-new-input-notifications.patch deleted file mode 100644 index 734ae0ef46cf..000000000000 --- a/kde-plasma/plasma-desktop/files/plasma-desktop-5.20.5-compress-new-input-notifications.patch +++ /dev/null @@ -1,109 +0,0 @@ -From 199cad52f0599872e57a2fcb391a459e48146be0 Mon Sep 17 00:00:00 2001 -From: David Faure <faure@kde.org> -Date: Sun, 31 Jan 2021 20:59:41 +0100 -Subject: [PATCH] Compress notifications about new mouse/keyboard. - -When resuming from suspend, I get 5 "new pointer" and 5 "new keyboard" -events (on a laptop with USB mouse/keyboard, but also stuff like -"Thinkpad Extra Buttons" adds more notifications than one would expect) - -KGlobalAccelImpl::x11MappingNotify is still called 15 times, but -that's better than 145 times... - -"new pointer" notifications end up calling `kcminit mouse`, better -also compress that. ---- - kcms/keyboard/xinput_helper.cpp | 30 +++++++++++++++++++++++++----- - kcms/keyboard/xinput_helper.h | 5 ++++- - 2 files changed, 29 insertions(+), 6 deletions(-) - -diff --git a/kcms/keyboard/xinput_helper.cpp b/kcms/keyboard/xinput_helper.cpp -index 14974ada7..bade5ea33 100644 ---- a/kcms/keyboard/xinput_helper.cpp -+++ b/kcms/keyboard/xinput_helper.cpp -@@ -23,6 +23,7 @@ - #include <QCoreApplication> - #include <QX11Info> - #include <QDebug> -+#include <QTimer> - - #include <X11/X.h> - #include <X11/Xlib.h> -@@ -56,9 +57,21 @@ static const int DEVICE_POINTER = 2; - XInputEventNotifier::XInputEventNotifier(QWidget* parent): - XEventNotifier(), //TODO: destruct properly? - xinputEventType(-1), -- udevNotifier(nullptr) -+ udevNotifier(nullptr), -+ keyboardNotificationTimer(new QTimer(this)), -+ mouseNotificationTimer(new QTimer(this)) - { -- Q_UNUSED(parent) -+ Q_UNUSED(parent) -+ -+ // emit signal only once, even after X11 re-enables N keyboards after resuming from suspend -+ keyboardNotificationTimer->setSingleShot(true); -+ keyboardNotificationTimer->setInterval(500); -+ connect(keyboardNotificationTimer, &QTimer::timeout, this, &XInputEventNotifier::newKeyboardDevice); -+ -+ // same for mouse -+ mouseNotificationTimer->setSingleShot(true); -+ mouseNotificationTimer->setInterval(500); -+ connect(mouseNotificationTimer, &QTimer::timeout, this, &XInputEventNotifier::newPointerDevice); - } - - void XInputEventNotifier::start() -@@ -83,11 +96,18 @@ bool XInputEventNotifier::processOtherEvents(xcb_generic_event_t* event) - { - int newDeviceType = getNewDeviceEventType(event); - if( newDeviceType == DEVICE_KEYBOARD ) { -- emit(newKeyboardDevice()); -+ if (!keyboardNotificationTimer->isActive()) { -+ keyboardNotificationTimer->start(); -+ } - } - else if( newDeviceType == DEVICE_POINTER ) { -- emit(newPointerDevice()); -- emit(newKeyboardDevice()); // arghhh, looks like X resets xkb map even when only pointer device is connected -+ if (!mouseNotificationTimer->isActive()) { -+ mouseNotificationTimer->start(); -+ } -+ // arghhh, looks like X resets xkb map even when only pointer device is connected -+ if (!keyboardNotificationTimer->isActive()) { -+ keyboardNotificationTimer->start(); -+ } - } - return true; - } -diff --git a/kcms/keyboard/xinput_helper.h b/kcms/keyboard/xinput_helper.h -index e29fdc22a..52b6a12b4 100644 ---- a/kcms/keyboard/xinput_helper.h -+++ b/kcms/keyboard/xinput_helper.h -@@ -25,13 +25,14 @@ - #include <X11/Xlib.h> - #include <fixx11h.h> - -+class QTimer; - class UdevDeviceNotifier; - - class XInputEventNotifier: public XEventNotifier { - Q_OBJECT - - public: -- XInputEventNotifier(QWidget* parent=nullptr); -+ explicit XInputEventNotifier(QWidget* parent=nullptr); - - void start() override; - void stop() override; -@@ -51,6 +52,8 @@ private: - int xinputEventType; - Display* display; - UdevDeviceNotifier *udevNotifier; -+ QTimer* keyboardNotificationTimer; -+ QTimer* mouseNotificationTimer; - }; - - #endif /* XINPUT_HELPER_H_ */ --- -GitLab - |