/* KWin - the KDE window manager This file is part of the KDE project. SPDX-FileCopyrightText: 2014 Martin Gräßlin SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include "effect/globals.h" #include #include #include #include #include #include #include #include class QSocketNotifier; class QThread; namespace KWin { class Session; class Udev; namespace LibInput { class Event; class Device; class Context; class ConnectionAdaptor; class KWIN_EXPORT Connection : public QObject { Q_OBJECT public: ~Connection() override; void setInputConfig(const KSharedConfigPtr &config) { m_config = config; } void setup(); void updateScreens(); void deactivate(); void processEvents(); QStringList devicesSysNames() const; static Connection *create(Session *session); Q_SIGNALS: void deviceAdded(KWin::LibInput::Device *); void deviceRemoved(KWin::LibInput::Device *); void eventsRead(); private Q_SLOTS: void slotKGlobalSettingsNotifyChange(int type, int arg); private: Connection(std::unique_ptr &&input); void handleEvent(); void applyDeviceConfig(Device *device); void applyScreenToDevice(Device *device); void doSetup(); std::unique_ptr m_notifier; QRecursiveMutex m_mutex; std::deque> m_eventQueue; QList m_devices; KSharedConfigPtr m_config; std::unique_ptr m_connectionAdaptor; std::unique_ptr m_input; std::unique_ptr m_udev; }; } }