SUMMARY If an output is hot-plugged, which is placed to the left of the current one, somewhat the overall X screen size is not updated correctly making space on the right output non-reachable via pointer device. This can be made explicit with Steam in BPM. The cursor stops in the middle of the screen and does not move further to the right. STEPS TO REPRODUCE 1. Hot-plug second output, which is placed in compositor space to the left of the current one. 2. Start Steam in BPM on the right monitor. 3. Try to move mouse to the right edge of the right monitor in BPM. OBSERVED RESULT Cursor stops moving in the middle of the screen. EXPECTED RESULT Cursor continues moving until it hit the right edge of the right screen.
That sounds like a problem of xwayland to me.
I thought this too at first, so I went through all the XWayland and X mouse setter input code. But it's this explicit done call: https://cgit.kde.org/kwin.git/tree/abstract_output.cpp#n105 XWayland expects the wl_output and xdg-output done calls to always come in pairs. But when the wl_output position is not changed our KWayland::Server::OutputInterface does not send a done event. Then next time a pair is sent not all xdg-output information is already sent, but XWayland thinks from previous done that xdg-output data has already arrived.
But that's an invalid assumption on xwayland side.
This should now be fixed