12#include "qwayland-server-xdg-output-unstable-v1.h"
23static const quint32 s_version = 3;
53 QHash<OutputInterface *, XdgOutputV1Interface *>
outputs;
72 Q_ASSERT_X(!d->outputs.contains(output),
"offer",
"An XdgOuputInterface already exists for this output");
75 d->outputs[output] = xdgOutput;
76 connect(output, &QObject::destroyed,
this, [
this, output]() {
77 delete d->outputs.take(output);
82 : QtWaylandServer::zxdg_output_manager_v1(*d, s_version)
92 auto xdgOutput =
outputs.value(output);
96 xdgOutput->add(resource->client(),
id, resource->version());
101 wl_resource_destroy(resource->handle);
123 const QRectF geometry =
output->handle()->geometryF();
124 const auto resources = resourceMap();
126 if (
pos != geometry.topLeft()) {
127 pos = geometry.topLeft();
128 for (
auto resource : resources) {
133 if (
size != geometry.size()) {
134 size = geometry.size();
135 for (
auto resource : resources) {
140 for (
auto resource : resources) {
141 if (wl_resource_get_version(resource->handle) < 3) {
142 send_done(resource->handle);
151 wl_resource_destroy(resource->handle);
162 if (resource->version() >= ZXDG_OUTPUT_V1_NAME_SINCE_VERSION) {
163 send_name(resource->handle,
name);
165 if (resource->version() >= ZXDG_OUTPUT_V1_DESCRIPTION_SINCE_VERSION) {
180 send_logical_size(resource->handle, std::round(
size.width() * scaleOverride), std::round(
size.height() * scaleOverride));
188 send_logical_position(resource->handle,
pos.x() * scaleOverride,
pos.y() * scaleOverride);
193 if (wl_resource_get_version(resource->handle) >= 3) {
194 output->done(resource->client());
196 send_done(resource->handle);
206 auto changedConnection = qobject_cast<ClientConnection *>(sender());
207 const auto outputResources = resourceMap();
208 for (
auto resource : outputResources) {
219#include "moc_xdgoutput_v1.cpp"
Convenient Class which represents a wl_client.
Display * display() const
void scaleOverrideChanged()
qreal scaleOverride() const
Class holding the Wayland server display loop.
ClientConnection * getConnection(wl_client *client)
QString description() const
static OutputInterface * get(wl_resource *native)
void offer(OutputInterface *output)
~XdgOutputManagerV1Interface() override
XdgOutputManagerV1Interface(Display *display, QObject *parent=nullptr)
XdgOutputManagerV1InterfacePrivate(Display *display)
QHash< OutputInterface *, XdgOutputV1Interface * > outputs
void zxdg_output_manager_v1_get_xdg_output(Resource *resource, uint32_t id, wl_resource *output) override
void zxdg_output_manager_v1_destroy(Resource *resource) override
void sendLogicalSize(Resource *resource)
void sendDone(Resource *resource)
QPointer< OutputInterface > output
void sendLogicalPosition(Resource *resource)
void zxdg_output_v1_bind_resource(Resource *resource) override
void zxdg_output_v1_destroy(Resource *resource) override
XdgOutputV1Interface(OutputInterface *wlOutput)
KWIN_EXPORT xcb_connection_t * connection()