Quick update - I have been looking into this lately to see if we could use Pekka's proposal of adding an _XWAYLAND_ALLOW_COMMITS property to tell Xwayland when to commit the surface:
Before so, I tried to understand what would be causing the back border issue in the first place and traced it down to meta_window_actor_update_opaque_region().
And it's not called from the same code path when using an application that uses _NET_WM_SYNC protocol (e.g. gtk-demo from gtk2) and one who doesn't (e.g. plain old xterm).
Quick update - I have been looking into this lately to see if we could use Pekka's proposal of adding an _XWAYLAND_ ALLOW_COMMITS property to tell Xwayland when to commit the surface:
https:/ /lists. x.org/archives/ xorg-devel/ 2016-November/ 051913. html /lists. x.org/archives/ xorg-devel/ 2016-December/ 051947. html
https:/
and
https:/ /patchwork. freedesktop. org/series/ 16610/
Before so, I tried to understand what would be causing the back border issue in the first place and traced it down to meta_window_ actor_update_ opaque_ region( ).
And it's not called from the same code path when using an application that uses _NET_WM_SYNC protocol (e.g. gtk-demo from gtk2) and one who doesn't (e.g. plain old xterm).
With XSync protocol:
meta_ window_ x11_update_ sync_request_ counter( ) compositor_ sync_updates_ frozen( ) window_ actor_sync_ updates_ frozen( )
meta_window_ actor_set_ updates_ frozen( )
meta_ window_ actor_thaw( )
meta_window_ actor_handle_ updates( )
check_needs_ reshape( )
meta_ window_ actor_update_ opaque_ region( );
meta_
meta_
Without XSync protocol:
clutter_ clock_dispatch( ) clock_update_ stages( ) clutter_ run_repaint_ functions( )
meta_window_ actor_pre_ paint()
meta_ window_ actor_handle_ updates( )
check_ needs_reshape( )
meta_window_ actor_update_ opaque_ region( );
master_
_