Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qwaylandclientextension.cpp
Go to the documentation of this file.
1// Copyright (C) 2017 Erik Larsson.
2// Copyright (C) 2021 David Redondo <qt@david-redondo.de>
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
7#include <QtWaylandClient/private/qwaylanddisplay_p.h>
8#include <QtWaylandClient/private/qwaylandintegration_p.h>
9
11
13
15{
16 // Keep the possibility to use a custom waylandIntegration as a plugin,
17 // but also add the possibility to run it as a QML component.
21}
22
24{
26 if (!active && global.interface == QLatin1String(q->extensionInterface()->name)) {
27 q->bind(global.registry, global.id, global.version);
28 active = true;
29 emit q->activeChanged();
30 }
31}
32
34{
36 if (active && global.interface == QLatin1String(q->extensionInterface()->name)) {
37 active = false;
38 emit q->activeChanged();
39 }
40}
41
43{
45 if (d->active) {
46 return;
47 }
48 const QtWaylandClient::QWaylandDisplay *display = d->waylandIntegration->display();
49 const auto globals = display->globals();
50 auto global =
51 std::find_if(globals.cbegin(), globals.cend(), [this](const RegistryGlobal &global) {
52 return global.interface == QLatin1String(extensionInterface()->name);
53 });
54 if (global != globals.cend()) {
55 bind(global->registry, global->id, global->version);
56 d->active = true;
58 }
59}
60
63{
65 d->version = ver;
66 auto display = d->waylandIntegration->display();
71 // This function uses virtual functions and we don't want it to be called from the constructor.
73}
74
78
80{
81 Q_D(const QWaylandClientExtension);
82 return d->waylandIntegration;
83}
84
86{
87 Q_D(const QWaylandClientExtension);
88 return d->version;
89}
90
92{
94 if (d->version != ver) {
95 d->version = ver;
97 }
98}
99
101{
102 Q_D(const QWaylandClientExtension);
103 return d->active;
104}
105
107
108#include "moc_qwaylandclientextension.cpp"
static QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiverPrivate, Func2 slot, Qt::ConnectionType type=Qt::AutoConnection)
Definition qobject_p.h:299
\inmodule QtCore
Definition qobject.h:103
void globalRemoved(const QtWaylandClient::QWaylandDisplay::RegistryGlobal &global)
QtWaylandClient::QWaylandIntegration * waylandIntegration
void globalAdded(const QtWaylandClient::QWaylandDisplay::RegistryGlobal &global)
QtWaylandClient::QWaylandIntegration * integration() const
virtual void bind(struct ::wl_registry *registry, int id, int version)=0
QWaylandClientExtension(const int version)
void setVersion(const int version)
void globalAdded(const RegistryGlobal &global)
QList< RegistryGlobal > globals() const
void globalRemoved(const RegistryGlobal &global)
static QWaylandIntegration * instance()
struct wl_display * display
Definition linuxdmabuf.h:41
Combined button and popup list for selecting options.
@ QueuedConnection
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
#define emit
QJSValue global
static bool invokeMethod(QObject *obj, const char *member, Qt::ConnectionType, QGenericReturnArgument ret, QGenericArgument val0=QGenericArgument(nullptr), QGenericArgument val1=QGenericArgument(), QGenericArgument val2=QGenericArgument(), QGenericArgument val3=QGenericArgument(), QGenericArgument val4=QGenericArgument(), QGenericArgument val5=QGenericArgument(), QGenericArgument val6=QGenericArgument(), QGenericArgument val7=QGenericArgument(), QGenericArgument val8=QGenericArgument(), QGenericArgument val9=QGenericArgument())
\threadsafe This is an overloaded member function, provided for convenience. It differs from the abov...