File indexing completed on 2024-05-12 17:07:30
0001 /* 0002 SPDX-FileCopyrightText: 2017 Roman Gilg <subdiff@gmail.com> 0003 SPDX-FileCopyrightText: 2013 Alexander Mezin <mezin.alexander@gmail.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "touchpadbackend.h" 0009 0010 #include "backends/kwin_wayland/kwinwaylandbackend.h" 0011 #include "backends/x11/xlibbackend.h" 0012 #include "logging.h" 0013 #include "touchpadparameters.h" 0014 0015 #include <QThreadStorage> 0016 0017 #include <KWindowSystem> 0018 0019 void touchpadApplySavedConfig() 0020 { 0021 TouchpadBackend *backend = TouchpadBackend::implementation(); 0022 if (!backend) { 0023 return; 0024 } 0025 0026 TouchpadParameters config; 0027 backend->applyConfig(config.values()); 0028 } 0029 0030 void TouchpadBackend::setMode(TouchpadInputBackendMode mode) 0031 { 0032 m_mode = mode; 0033 } 0034 0035 TouchpadBackend *TouchpadBackend::implementation() 0036 { 0037 // There are multiple possible backends 0038 if (KWindowSystem::isPlatformX11()) { 0039 static QThreadStorage<std::shared_ptr<XlibBackend>> backend; 0040 if (!backend.hasLocalData()) { 0041 qCDebug(KCM_TOUCHPAD) << "Using X11 backend"; 0042 backend.setLocalData(std::shared_ptr<XlibBackend>(XlibBackend::initialize())); 0043 } 0044 return backend.localData().get(); 0045 } 0046 // TODO: test on kwin_wayland specifically? What about possibly other compositors under Wayland? 0047 else if (KWindowSystem::isPlatformWayland()) { 0048 qCDebug(KCM_TOUCHPAD) << "Using KWin+Wayland backend"; 0049 return (new KWinWaylandBackend()); 0050 } else { 0051 qCCritical(KCM_TOUCHPAD) << "Not able to select appropriate backend."; 0052 return nullptr; 0053 } 0054 }