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