You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
plasma-desktop/0001-Fix-touchpad-backend-i...

75 lines
2.7 KiB

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