8#include <qguiapplication.h>
14 QHash<uint32_t, std::pair<QString, uint32_t>>
globals;
15 bool initialized =
false;
29 d->globals.insert(name, std::pair<QString, uint32_t>(interface, version));
34 if (qEnvironmentVariable(
"KRITA_FORCE_WAYLAND_INTERFACES").split(
u',').contains(interface)) {
39 static QStringList interfaceBlacklist = qEnvironmentVariable(
"QT_WAYLAND_DISABLED_INTERFACES").split(
u',');
41 if (interfaceBlacklist.contains(interface)) {
45 Q_FOREACH(
auto global,
d->globals.values()) {
46 if (global.first == interface)
55 d->globals.remove(name);
60 if (!s_waylandRegistry->d->initialized) {
62 registry->
d->initialized =
true;
64 auto waylandApp = qGuiApp->nativeInterface<QNativeInterface::QWaylandApplication>();
65 auto display = waylandApp->display();
66 auto regisry = ::wl_display_get_registry(display);
67 registry->init(regisry);
70 ::wl_display_roundtrip(display);
73 return s_waylandRegistry;
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