Krita Source Code Documentation
Loading...
Searching...
No Matches
KisWaylandRegistry.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2026 Luna Lovecraft <ciubix8514@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
8#include <qguiapplication.h>
9
10Q_GLOBAL_STATIC(KisWaylandRegistry, s_waylandRegistry)
11
13{
14 QHash<uint32_t, std::pair<QString, uint32_t>> globals;
15 bool initialized = false;
16};
17
22
26
27void KisWaylandRegistry::registry_global(uint32_t name, const QString &interface, uint32_t version)
28{
29 d->globals.insert(name, std::pair<QString, uint32_t>(interface, version));
30}
31
32bool KisWaylandRegistry::globalExists(const QString& interface)
33{
34 if (qEnvironmentVariable("KRITA_FORCE_WAYLAND_INTERFACES").split(u',').contains(interface)) {
35 return true;
36 }
37
38 //Check if the interface is explicitly disabled
39 static QStringList interfaceBlacklist = qEnvironmentVariable("QT_WAYLAND_DISABLED_INTERFACES").split(u',');
40
41 if (interfaceBlacklist.contains(interface)) {
42 return false;
43 }
44
45 Q_FOREACH(auto global, d->globals.values()) {
46 if (global.first == interface)
47 return true;
48 }
49
50 return false;
51}
52
54{
55 d->globals.remove(name);
56}
57
59{
60 if (!s_waylandRegistry->d->initialized) {
61 KisWaylandRegistry *registry = s_waylandRegistry;
62 registry->d->initialized = true;
63
64 auto waylandApp = qGuiApp->nativeInterface<QNativeInterface::QWaylandApplication>();
65 auto display = waylandApp->display();
66 auto regisry = ::wl_display_get_registry(display);
67 registry->init(regisry);
68
69 //Wait for the compositor to populate the registry
70 ::wl_display_roundtrip(display);
71 }
72
73 return s_waylandRegistry;
74}
qreal u
Q_GLOBAL_STATIC(KisStoragePluginRegistry, s_instance)
Wayland registry for tracking wayland globals.
QScopedPointer< Private > d
static KisWaylandRegistry * getOrCreate()
void registry_global_remove(uint32_t name) override
bool globalExists(const QString &interface)
void registry_global(uint32_t name, const QString &interface, uint32_t version) override
QHash< uint32_t, std::pair< QString, uint32_t > > globals