45 Q_DECLARE_PRIVATE(QWaylandCompositor)
46 Q_PROPERTY(QByteArray socketName READ socketName WRITE setSocketName NOTIFY socketNameChanged)
47 Q_PROPERTY(
bool created READ isCreated NOTIFY createdChanged)
48 Q_PROPERTY(
bool retainedSelection READ retainedSelectionEnabled WRITE setRetainedSelectionEnabled NOTIFY retainedSelectionChanged)
49 Q_PROPERTY(QWaylandOutput *defaultOutput READ defaultOutput WRITE setDefaultOutput NOTIFY defaultOutputChanged)
50 Q_PROPERTY(
bool useHardwareIntegrationExtension READ useHardwareIntegrationExtension WRITE setUseHardwareIntegrationExtension NOTIFY useHardwareIntegrationExtensionChanged)
51 Q_PROPERTY(QWaylandSeat *defaultSeat READ defaultSeat NOTIFY defaultSeatChanged)
52 Q_PROPERTY(QVector<ShmFormat> additionalShmFormats READ additionalShmFormats WRITE setAdditionalShmFormats NOTIFY additionalShmFormatsChanged REVISION(6, 0))
53 Q_MOC_INCLUDE(
"qwaylandseat.h")
54 QML_NAMED_ELEMENT(WaylandCompositorBase)
55 QML_UNCREATABLE(
"Cannot create instance of WaylandCompositorBase, use WaylandCompositor instead")
56 QML_ADDED_IN_VERSION(1, 0)
60 ShmFormat_ARGB8888 = 0,
61 ShmFormat_XRGB8888 = 1,
62 ShmFormat_C8 = 0x20203843,
63 ShmFormat_XRGB4444 = 0x32315258,
64 ShmFormat_ARGB4444 = 0x32315241,
65 ShmFormat_XRGB1555 = 0x35315258,
66 ShmFormat_RGB565 = 0x36314752,
67 ShmFormat_RGB888 = 0x34324752,
68 ShmFormat_XBGR8888 = 0x34324258,
69 ShmFormat_ABGR8888 = 0x34324241,
70 ShmFormat_BGR888 = 0x34324742,
71 ShmFormat_XRGB2101010 = 0x30335258,
72 ShmFormat_XBGR2101010 = 0x30334258,
73 ShmFormat_ARGB2101010 = 0x30335241,
74 ShmFormat_ABGR2101010 = 0x30334241
78 QWaylandCompositor(QObject *parent =
nullptr);
79 ~QWaylandCompositor() override;
81 virtual void create();
82 bool isCreated()
const;
84 void setSocketName(
const QByteArray &name);
85 QByteArray socketName()
const;
87 Q_INVOKABLE
void addSocketDescriptor(
int fd);
89 ::wl_display *display()
const;
90 uint32_t nextSerial();
92 QList<QWaylandClient *>clients()
const;
93 Q_INVOKABLE
void destroyClientForSurface(QWaylandSurface *surface);
94 Q_INVOKABLE
void destroyClient(QWaylandClient *client);
96 QList<QWaylandSurface *> surfaces()
const;
97 QList<QWaylandSurface *> surfacesForClient(QWaylandClient* client)
const;
99 Q_INVOKABLE QWaylandOutput *outputFor(QWindow *window)
const;
101 QWaylandOutput *defaultOutput()
const;
102 void setDefaultOutput(QWaylandOutput *output);
103 QList<QWaylandOutput *> outputs()
const;
105 uint currentTimeMsecs()
const;
107 void setRetainedSelectionEnabled(
bool enabled);
108 bool retainedSelectionEnabled()
const;
109 void overrideSelection(
const QMimeData *data);
111 QWaylandSeat *defaultSeat()
const;
113 QWaylandSeat *seatFor(QInputEvent *inputEvent);
115 bool useHardwareIntegrationExtension()
const;
116 void setUseHardwareIntegrationExtension(
bool use);
118 QVector<ShmFormat> additionalShmFormats()
const;
119 void setAdditionalShmFormats(
const QVector<ShmFormat> &additionalShmFormats);
121 virtual void grabSurface(QWaylandSurfaceGrabber *grabber,
const QWaylandBufferRef &buffer);
124 void processWaylandEvents();
127 void applicationStateChanged(Qt::ApplicationState state);
130 void createdChanged();
131 void socketNameChanged(
const QByteArray &socketName);
132 void retainedSelectionChanged(
bool retainedSelection);
134 void surfaceRequested(QWaylandClient *client, uint id,
int version);
135 void surfaceCreated(QWaylandSurface *surface);
136 void surfaceAboutToBeDestroyed(QWaylandSurface *surface);
137 void subsurfaceChanged(QWaylandSurface *child, QWaylandSurface *parent);
139 void defaultOutputChanged();
140 void defaultSeatChanged(QWaylandSeat *newDevice, QWaylandSeat *oldDevice);
142 void useHardwareIntegrationExtensionChanged();
144 void outputAdded(QWaylandOutput *output);
145 void outputRemoved(QWaylandOutput *output);
147 void additionalShmFormatsChanged();
150 virtual void retainedSelectionReceived(QMimeData *mimeData);
151 virtual QWaylandSeat *createSeat();
152 virtual QWaylandPointer *createPointerDevice(QWaylandSeat *seat);
153 virtual QWaylandKeyboard *createKeyboardDevice(QWaylandSeat *seat);
154 virtual QWaylandTouch *createTouchDevice(QWaylandSeat *seat);
156 QWaylandCompositor(QWaylandCompositorPrivate &dptr, QObject *parent =
nullptr);