Summary: | The mouse event has a region that does not work for a scaled xwayland window | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Weng Xuetian <wengxt> |
Component: | wayland-generic | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | nate |
Priority: | NOR | ||
Version: | 5.21.0 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/kwin/commit/d612d76e09ec5d8d26121d3e2dee17ef4867f5f7 | Version Fixed In: | 5.22 |
Description
Weng Xuetian
2021-02-19 07:07:05 UTC
This seems only happen when change the scale back and forth. It works after a clean login. I changed to 150% first, then back to 125% and noticed this issue. Looks like there's some inconsistency state with in the kwin. Please report this issue to Xwayland developers. If I set a scale factor of 1.5 on my 1920x1080 monitor, kwin sends out a logical_size event with correct size [1159322.527] zxdg_output_v1@14.logical_size(1280, 720) [1159322.536] zxdg_output_v1@14.done() If I set a scale factor of 1.25 on my 1920x1080 monitor, kwin sends out a logical_size event with correct size as well [1219097.163] zxdg_output_v1@14.logical_size(1536, 864) [1219097.191] zxdg_output_v1@14.done() When the pointer is close to the bottom right corner of xev, the motion events carry expected position, but xev still reports that the pointer is at 1279, 719 [1265188.945] wl_pointer@25.motion(148413, 1529.000000, 853.000000) [1265189.050] wl_pointer@25.frame() [1265189.088] zwp_relative_pointer_v1@26.relative_motion(0, 148413009, 1.773438, 0.000000, 2.000000, 0.000000) [1265189.197] wl_pointer@25.frame() [1265198.946] wl_pointer@25.motion(148423, 1531.000000, 854.000000) [1265199.050] wl_pointer@25.frame() [1265199.088] zwp_relative_pointer_v1@26.relative_motion(0, 148423010, 2.000000, 1.000000, 2.000000, 1.000000) [1265199.197] wl_pointer@25.frame() [1265206.944] wl_pointer@25.motion(148431, 1533.000000, 855.000000) [1265207.050] wl_pointer@25.frame() [1265207.087] zwp_relative_pointer_v1@26.relative_motion(0, 148431011, 2.000000, 1.000000, 2.000000, 1.000000) [1265207.181] wl_pointer@25.frame() This looks like an Xwayland issue. (^ to get the wayland debug log output, I ran kwin with KWIN_XWAYLAND_DEBUG=1) So here's my observation: Xwayland always received the "old size request", instead of the latest one. when set 150% -> xrandr output is still the last value. This is done by check kwin log and the xrandr output under wayland. Also I didn't notice that gnome-shell has the same problem. So I wonder if kwin is missing some kind "flush" operation in the implemenation. (In reply to Weng Xuetian from comment #4) > So here's my observation: > Xwayland always received the "old size request", instead of the latest one. The last time I checked it, kwin was sending out the latest output information. If there is something wrong with Xrandr outputs, it's most likely an issue in Xwayland. > when set 150% -> xrandr output is still the last value. > > This is done by check kwin log and the xrandr output under wayland. > > Also I didn't notice that gnome-shell has the same problem. So I wonder if > kwin is missing some kind "flush" operation in the implemenation. A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/773 Git commit e004156aba52fc025f491b11ac26b0e9f873803e by Weng Xuetian. Committed on 19/03/2021 at 17:39. Pushed by xuetianweng into branch 'master'. Add explicit done to OutputInterface and deprecate zxdg_output_v1.done if version 3 is used. In zxdg_output_v1 version 3, done is deprecated and should be replaced with wl_output.done. This makes automatically send done upon change not suitable for the usage. OutputInterface user should now use done() explicitly to send the update. M +7 -0 autotests/client/test_wayland_output.cpp M +1 -0 autotests/client/test_xdg_output.cpp M +7 -4 src/server/output_interface.cpp M +6 -0 src/server/output_interface.h M +19 -6 src/server/xdgoutput_v1_interface.cpp M +1 -1 src/server/xdgoutput_v1_interface.h https://invent.kde.org/plasma/kwayland-server/commit/e004156aba52fc025f491b11ac26b0e9f873803e Git commit d612d76e09ec5d8d26121d3e2dee17ef4867f5f7 by Weng Xuetian. Committed on 19/03/2021 at 16:53. Pushed by xuetianweng into branch 'master'. Replace xdg output done with explicit wl_output done M +6 -1 src/abstract_wayland_output.cpp https://invent.kde.org/plasma/kwin/commit/d612d76e09ec5d8d26121d3e2dee17ef4867f5f7 |