Files
RedBear-OS/local/recipes/kde/kwin/source/src/backends/libinput/connection.h
T
2026-04-14 10:51:06 +01:00

94 lines
1.8 KiB
C++

/*
KWin - the KDE window manager
This file is part of the KDE project.
SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include "effect/globals.h"
#include <KSharedConfig>
#include <QList>
#include <QObject>
#include <QPointer>
#include <QRecursiveMutex>
#include <QSize>
#include <QStringList>
#include <deque>
class QSocketNotifier;
class QThread;
struct libinput_tablet_tool;
namespace KWin
{
class Session;
class Udev;
namespace LibInput
{
class Event;
class Device;
class Context;
class ConnectionAdaptor;
class TabletTool;
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<Context> &&input);
void handleEvent();
void applyDeviceConfig(Device *device);
void applyScreenToDevice(Device *device);
void doSetup();
TabletTool *getOrCreateTool(libinput_tablet_tool *tool);
std::unique_ptr<QSocketNotifier> m_notifier;
QRecursiveMutex m_mutex;
std::deque<std::unique_ptr<Event>> m_eventQueue;
QList<Device *> m_devices;
QList<TabletTool *> m_tools;
KSharedConfigPtr m_config;
std::unique_ptr<ConnectionAdaptor> m_connectionAdaptor;
std::unique_ptr<Context> m_input;
std::unique_ptr<Udev> m_udev;
};
}
}