diff --git a/abstract_output.cpp b/abstract_output.cpp --- a/abstract_output.cpp +++ b/abstract_output.cpp @@ -79,7 +79,7 @@ if (m_waylandOutputDevice) { m_waylandOutputDevice->setGlobalPosition(pos); } - if (m_xdgOutput) { + if (m_xdgOutput && m_xdgOutput->logicalPosition() != pos) { m_xdgOutput->setLogicalPosition(pos); m_xdgOutput->done(); } @@ -100,7 +100,7 @@ if (m_waylandOutputDevice) { m_waylandOutputDevice->setScaleF(scale); } - if (m_xdgOutput) { + if (m_xdgOutput && m_xdgOutput->logicalSize() != pixelSize() / m_scale) { m_xdgOutput->setLogicalSize(pixelSize() / m_scale); m_xdgOutput->done(); } @@ -159,7 +159,7 @@ return; } m_waylandOutput->setCurrentMode(size, refreshRate); - if (m_xdgOutput) { + if (m_xdgOutput && m_xdgOutput->logicalSize() != pixelSize() / m_scale) { m_xdgOutput->setLogicalSize(pixelSize() / scale()); m_xdgOutput->done(); }