Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.15.0
-
None
-
-
b36a345d727eab37ee4ec4c2dc4674d5971c81d8 (qt/qtwayland/dev) 7193e64ef16a72b71d08a48f096ba854631d1b5f (qt/tqtc-qtwayland/tqtc/lts-5.15)
Description
Another potential issue spotted while working OBS Studio's port to be a native Wayland client. Have a look at the attached screenshot.
There are lots of subsurfaces in this program, but there's this particular situation that involves 2 subsurfaces. Have a look in this snipped:
[3445114.921] -> wl_compositor@4.create_surface(new id wl_surface@55)
...
[3445125.333] -> wl_subcompositor@12.get_subsurface(new id wl_subsurface@62, wl_surface@55, wl_surface@24)
[3445125.348] -> wl_subsurface@62.set_desync()[3445125.353] -> wl_surface@55.set_buffer_scale(1)
[3445125.378] -> wl_subsurface@60.set_position(0, 0)
[3445125.386] -> wl_subsurface@61.set_position(0, 22)
[3445125.396] -> wl_subsurface@62.set_position(1006, 0)
[3445125.408] -> wl_surface@55.set_buffer_transform(0)
[3445125.414] -> wl_surface@55.commit()}} *//{{ ←←←←← This is the first and only commit of wl_surface@55}}[3447948.021] -> wl_subsurface@62.set_position(1006, 0)
[3448025.196] -> wl_subsurface@62.set_position(1014, 0)
...
The full log can be found here: obs wayland debug.txt
As you can see, wl_subsurface@62 (subsurface object of wl_surface@55) has many calls to set_position(), but they are never committed. This surface has no buffer.