Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
5.15.1
-
None
Description
If you resize any QtWidgets-based application, e.g. Dolphin, by dragging its top-left corner, the bottom-right corner will bounce during resize.
After running Dolphin with WAYLAND_DEBUG=1, I found a somewhat strange behavior
[2452527.323] wl_buffer@59.release()
[2452527.325] xdg_toplevel@32.configure(1415, 751, array) # resizing
[2452527.330] xdg_surface@31.configure(1861)
[2452527.339] xdg_toplevel@32.configure(1426, 754, array) # resizing
[2452527.346] xdg_surface@31.configure(1862)
[2452527.349] wl_buffer@46.release()
[2452527.351] xdg_toplevel@32.configure(1437, 757, array) # resizing
[2452527.357] xdg_surface@31.configure(1863)
[2452527.360] xdg_toplevel@32.configure(1454, 761, array) # resizing
[2452527.363] xdg_surface@31.configure(1864)
[2452527.366] xdg_toplevel@32.configure(1469, 767, array) # resizing
[2452527.372] xdg_surface@31.configure(1865)
[2452527.375] xdg_toplevel@32.configure(1479, 769, array) # resizing
[2452527.380] xdg_surface@31.configure(1866)
[2452527.671] -> wl_shm_pool@39.destroy()
[2452527.681] -> wl_buffer@59.destroy()
[2452527.871] -> wl_shm_pool@57.destroy()
[2452527.879] -> wl_buffer@46.destroy()
[2452527.908] -> wl_shm@6.create_pool(new id wl_shm_pool@50, fd 38, 17002640)
[2452527.915] -> wl_shm_pool@50.create_buffer(new id wl_buffer@38, 0, 2830, 1502, 11320, 0)
[2452550.453] -> xdg_surface@31.set_window_geometry(0, 0, 1479, 769)
[2452550.470] -> xdg_toplevel@32.set_min_size(406, 382)
[2452550.473] -> xdg_toplevel@32.set_max_size(0, 0)
[2452550.477] -> xdg_surface@31.ack_configure(1866)
[2452550.486] -> wl_surface@26.frame(new id wl_callback@55)
[2452550.495] -> wl_surface@26.attach(wl_buffer@38, 0, 0)
[2452550.500] -> wl_surface@26.damage(0, 0, 1415, 751)
[2452550.507] -> wl_surface@26.commit() # responding to configure event with serial 1866
[2452550.557] -> wl_shm@6.create_pool(new id wl_shm_pool@61, fd 39, 17002640)
[2452550.565] -> wl_shm_pool@61.create_buffer(new id wl_buffer@58, 0, 2830, 1502, 11320, 0)
[2452558.259] -> wl_surface@26.frame(new id wl_callback@35)
[2452558.273] -> wl_surface@26.attach(wl_buffer@58, 0, 0)
[2452558.277] -> wl_surface@26.damage(0, 0, 1415, 751)
[2452558.282] -> wl_surface@26.commit() # huh, responding to configure event with serial 1861???
[2452573.067] -> zwp_text_input_v2@21.update_state(1306, 0)
[2452573.178] -> zwp_text_input_v2@21.update_state(1306, 0)
As you can see, Dolphin resizes itself according to the last received configure event (whose serial is 1866), but then for some reason, it immediately commits another buffer, which seems to be in response to the first configure event (whose serial is 1861). This causes the bouncing issue.
QtQuick-based applications seem to be unaffected by this issue.