diff --git a/src/server/xdgoutput_interface.cpp b/src/server/xdgoutput_interface.cpp --- a/src/server/xdgoutput_interface.cpp +++ b/src/server/xdgoutput_interface.cpp @@ -80,6 +80,7 @@ void resourceDisconnected(XdgOutputV1Interface *resource); QPoint pos; QSize size; + bool dirty = false; bool doneOnce = false; QList resources; }; @@ -187,6 +188,7 @@ return; } d->size = size; + d->dirty = true; for(auto resource: d->resources) { resource->setLogicalSize(size); } @@ -203,6 +205,7 @@ return; } d->pos = pos; + d->dirty = true; for(auto resource: d->resources) { resource->setLogicalPosition(pos); } @@ -216,6 +219,10 @@ void XdgOutputInterface::done() { d->doneOnce = true; + if (!d->dirty) { + return; + } + d->dirty = false; for(auto resource: d->resources) { resource->done(); }