KWin
Loading...
Searching...
No Matches
wayland_display.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2022 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#pragma once
8
9#include <QHash>
10#include <QObject>
11
12#include <memory>
13
14struct wl_display;
15struct wl_registry;
16struct wl_shm;
17struct zwp_linux_dmabuf_v1;
18
19namespace KWayland
20{
21namespace Client
22{
23class Compositor;
25class PointerGestures;
26class RelativePointerManager;
27class Seat;
28class XdgDecorationManager;
29class XdgShell;
30}
31}
32
33namespace KWin
34{
35namespace Wayland
36{
37
38class WaylandEventThread;
39class WaylandLinuxDmabufFeedbackV1;
40
42{
43public:
44 WaylandLinuxDmabufV1(wl_registry *registry, uint32_t name, uint32_t version);
46
47 zwp_linux_dmabuf_v1 *handle() const;
48 QByteArray mainDevice() const;
49 QHash<uint32_t, QList<uint64_t>> formats() const;
50
51private:
52 static void format(void *data, struct zwp_linux_dmabuf_v1 *zwp_linux_dmabuf_v1, uint32_t format);
53 static void modifier(void *data, struct zwp_linux_dmabuf_v1 *zwp_linux_dmabuf_v1, uint32_t format, uint32_t modifier_hi, uint32_t modifier_lo);
54
55 zwp_linux_dmabuf_v1 *m_dmabuf;
56 std::unique_ptr<WaylandLinuxDmabufFeedbackV1> m_defaultFeedback;
57};
58
59class WaylandDisplay : public QObject
60{
61 Q_OBJECT
62
63public:
65 ~WaylandDisplay() override;
66
67 bool initialize(const QString &socketName);
68
69 wl_display *nativeDisplay() const;
70 KWayland::Client::Compositor *compositor() const;
71 KWayland::Client::PointerConstraints *pointerConstraints() const;
72 KWayland::Client::PointerGestures *pointerGestures() const;
73 KWayland::Client::RelativePointerManager *relativePointerManager() const;
74 KWayland::Client::Seat *seat() const;
75 KWayland::Client::XdgDecorationManager *xdgDecorationManager() const;
76 wl_shm *shm() const;
77 KWayland::Client::XdgShell *xdgShell() const;
79
80public Q_SLOTS:
81 void flush();
82
83private:
84 static void registry_global(void *data, wl_registry *registry, uint32_t name, const char *interface, uint32_t version);
85 static void registry_global_remove(void *data, wl_registry *registry, uint32_t name);
86
87 wl_display *m_display = nullptr;
88 wl_registry *m_registry = nullptr;
89 wl_shm *m_shm = nullptr;
90 std::unique_ptr<WaylandEventThread> m_eventThread;
91 std::unique_ptr<WaylandLinuxDmabufV1> m_linuxDmabuf;
92 std::unique_ptr<KWayland::Client::Compositor> m_compositor;
93 std::unique_ptr<KWayland::Client::PointerConstraints> m_pointerConstraints;
94 std::unique_ptr<KWayland::Client::PointerGestures> m_pointerGestures;
95 std::unique_ptr<KWayland::Client::RelativePointerManager> m_relativePointerManager;
96 std::unique_ptr<KWayland::Client::Seat> m_seat;
97 std::unique_ptr<KWayland::Client::XdgDecorationManager> m_xdgDecorationManager;
98 std::unique_ptr<KWayland::Client::XdgShell> m_xdgShell;
99};
100
101}
102}
The Client class encapsulates a window decoration frame.
wl_display * nativeDisplay() const
KWayland::Client::PointerConstraints * pointerConstraints() const
KWayland::Client::RelativePointerManager * relativePointerManager() const
bool initialize(const QString &socketName)
WaylandLinuxDmabufV1 * linuxDmabuf() const
KWayland::Client::XdgDecorationManager * xdgDecorationManager() const
KWayland::Client::Compositor * compositor() const
KWayland::Client::PointerGestures * pointerGestures() const
KWayland::Client::Seat * seat() const
KWayland::Client::XdgShell * xdgShell() const
WaylandLinuxDmabufV1(wl_registry *registry, uint32_t name, uint32_t version)
QHash< uint32_t, QList< uint64_t > > formats() const
zwp_linux_dmabuf_v1 * handle() const
constexpr int version
GLenum format
Definition gltexture.cpp:49