pull in upstream fix for kcm_touchpad: No touchpad found (#1199825)
parent
0f737b3246
commit
17769b0d70
@ -0,0 +1,74 @@
|
|||||||
|
From 3f2e6bd31e0cd7355f95450cdc185e4d37ed2c16 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rajeesh K Nambiar <rajeeshknambiar@gmail.com>
|
||||||
|
Date: Sat, 27 Jun 2015 13:58:17 +0200
|
||||||
|
Subject: [PATCH] Fix touchpad backend initialization.
|
||||||
|
|
||||||
|
Libinput driver, even when unistalled was leaving 'Libinput Tapping
|
||||||
|
Enabled' atom active (xlsatoms | grep -i tap). Mutter/Clutter/Gtk+ were
|
||||||
|
causing this, as noted in https://bugzilla.redhat.com/show_bug.cgi?
|
||||||
|
id=1199825. This caused the non-existent libinput backend initialization
|
||||||
|
resulting in 'No touchpad found' error even when synaptics driver was
|
||||||
|
installed.
|
||||||
|
Fix this by checking backend instantiation errors.
|
||||||
|
|
||||||
|
BUG: 344958,349214
|
||||||
|
REVIEW: 124172
|
||||||
|
FIXED-IN: 5.4.0
|
||||||
|
---
|
||||||
|
kcms/touchpad/src/backends/x11/xlibbackend.cpp | 20 +++++++++++++-------
|
||||||
|
1 file changed, 13 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/kcms/touchpad/src/backends/x11/xlibbackend.cpp b/kcms/touchpad/src/backends/x11/xlibbackend.cpp
|
||||||
|
index 2acb162..b55a45f 100644
|
||||||
|
--- a/kcms/touchpad/src/backends/x11/xlibbackend.cpp
|
||||||
|
+++ b/kcms/touchpad/src/backends/x11/xlibbackend.cpp
|
||||||
|
@@ -151,8 +151,10 @@ XlibSynapticsBackend::XlibSynapticsBackend(QObject *parent) :
|
||||||
|
XlibBackend(parent)
|
||||||
|
{
|
||||||
|
m_capsAtom.intern(m_connection, SYNAPTICS_PROP_CAPABILITIES);
|
||||||
|
- if (!m_capsAtom.atom())
|
||||||
|
+ if (!m_capsAtom.atom()) {
|
||||||
|
+ m_errorString = i18nc("Synaptics touchpad driver","Synaptics backend not found");
|
||||||
|
return;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
m_device = findTouchpad(m_capsAtom);
|
||||||
|
if (m_device == XIAllDevices) {
|
||||||
|
@@ -275,8 +277,10 @@ XlibLibinputBackend::XlibLibinputBackend(QObject *parent) :
|
||||||
|
"libinput Tapping Enabled",
|
||||||
|
true);
|
||||||
|
|
||||||
|
- if (!identifier.atom())
|
||||||
|
+ if (!identifier.atom()) {
|
||||||
|
+ m_errorString = i18nc("Libinput touchpad driver","Libinput backend not found");
|
||||||
|
return;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
m_device = findTouchpad(identifier);
|
||||||
|
if (m_device == XIAllDevices) {
|
||||||
|
@@ -318,15 +322,17 @@ XlibLibinputBackend::XlibLibinputBackend(QObject *parent) :
|
||||||
|
|
||||||
|
XlibBackend* XlibBackend::initialize(QObject *parent)
|
||||||
|
{
|
||||||
|
+ XlibBackend* backend = nullptr;
|
||||||
|
QScopedPointer<Display, XDisplayCleanup> display(XOpenDisplay(0));
|
||||||
|
xcb_connection_t *connection = XGetXCBConnection(display.data());
|
||||||
|
XcbAtom synaptics_prop_capablities, libinput_prop_tapping;
|
||||||
|
|
||||||
|
- libinput_prop_tapping.intern(connection, "libinput Tapping Enabled");
|
||||||
|
- if (libinput_prop_tapping.atom())
|
||||||
|
- return new XlibLibinputBackend(parent);
|
||||||
|
- else
|
||||||
|
- return new XlibSynapticsBackend(parent);
|
||||||
|
+ backend = new XlibLibinputBackend(parent);
|
||||||
|
+ if (! backend->errorString().isNull()) {
|
||||||
|
+ delete backend;
|
||||||
|
+ backend = new XlibSynapticsBackend(parent);
|
||||||
|
+ }
|
||||||
|
+ return backend;
|
||||||
|
}
|
||||||
|
|
||||||
|
XlibBackend::~XlibBackend()
|
||||||
|
--
|
||||||
|
2.4.3
|
||||||
|
|
@ -1,20 +0,0 @@
|
|||||||
diff -ur plasma-desktop-5.3.1/kcms/touchpad/src/backends/x11/xlibbackend.cpp plasma-desktop-5.3.1-patched/kcms/touchpad/src/backends/x11/xlibbackend.cpp
|
|
||||||
--- plasma-desktop-5.3.1/kcms/touchpad/src/backends/x11/xlibbackend.cpp 2015-05-21 11:56:56.000000000 -0500
|
|
||||||
+++ plasma-desktop-5.3.1-patched/kcms/touchpad/src/backends/x11/xlibbackend.cpp 2015-06-23 14:37:18.191713320 -0500
|
|
||||||
@@ -322,11 +322,16 @@
|
|
||||||
xcb_connection_t *connection = XGetXCBConnection(display.data());
|
|
||||||
XcbAtom synaptics_prop_capablities, libinput_prop_tapping;
|
|
||||||
|
|
||||||
+ synaptics_prop_capablities.intern(connection,"synaptics Tap Action");
|
|
||||||
+ if (synaptics_prop_capablities.atom()) {
|
|
||||||
+ return new XlibSynapticsBackend(parent);
|
|
||||||
+ } else {
|
|
||||||
libinput_prop_tapping.intern(connection, "libinput Tapping Enabled");
|
|
||||||
if (libinput_prop_tapping.atom())
|
|
||||||
return new XlibLibinputBackend(parent);
|
|
||||||
else
|
|
||||||
return new XlibSynapticsBackend(parent);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
XlibBackend::~XlibBackend()
|
|
Loading…
Reference in new issue