davidedmundson added a comment.
I wouldn't say it's handling it incorrectly. In the scenario you've give the logical size hasn't changed. > a single wl_output::done event might be generated but not the respective xdg_output::done event. I was under the impression that xwayland expects an xdg_output::done to have a corresponding wl_output::done, but not necessarily the other way round? If we do need them to always be paired we'll have the same issue if you change refresh rate without changing the resolution. The only long term option I can think of that would fix that is exposing the dirty bit publicly and having kwin do: if (output->isDirty() || xdgOutput->isDirty()) { output->done(); xdgOutput->done(); } (after porting Output to this same pattern) REPOSITORY R127 KWayland BRANCH master REVISION DETAIL https://phabricator.kde.org/D19255 To: davidedmundson, #kwin, romangg Cc: romangg, kde-frameworks-devel, michaelh, ngraham, bruns