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.
75 lines
2.7 KiB
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
|
|
|