[Xcb] Frame synchronization

VaL valkov at ya.ru
Tue Feb 19 16:10:06 UTC 2019


Hi Sam, 

thanks for meaningful explanation.

19.02.2019, 14:21, "Sam Varshavchik" <mrsam at courier-mta.com>:
> The window manager resizes the window after sending the sync request. End of
> story. The same thing is observed by the client. It receives a
> _NET_WM_SYNC_REQUEST, followed by ConfigureNotify, and/or any expose events
> that follow it. Whether or not, in actuality, the window manager resizes the
> window, in relativistic spacetime, before the client receives the
> synchronization request, is entirely up to the luck of the draw. It may or
> may not happen each individual time. Neither the window manager, nor the
> client, has any means of controlling it. Whether that happens, or not,
> depends entirely on external factors. Such as whether one or the other –
> the window manager, or the client – is running locally, or running in a
> tunneled X connection on the other side of the Earth, or a different planet
> altogether. All of these factors, and many others, will decide whether or
> not the window manager ends up actually resizing the window before or after
> the client receives the _NET_WM_SYNC_REQUEST message.
>

If we continuously update content of the window (e.g. showing an animation), and this window is being resizing at the same time,
does it mean, that we do NOT have a control to sync our flushing and resizing?
Because _NET_WM_SYNC_REQUEST event is not received yet or it is in event queue but the geometry is already changed?
And we update the window with old geometry before we handle the sync request.

Using the extended sync, will WM reconfigure the window after it "receives" updated sync req counter (with odd value)?
And should not change the geometry in other cases.
Or is it the same as basic, when after sync req is sent, then the window gets resized?

Could the extended sync method be a solution for these continuous updates?

I've tried to use extended version, but unfortunately the same issue, when the updates are done only after sending req counter, like
<- sync req counter is received from WM
-> increased, means begin frame
.. update
-> increased, end frame.
.. update

<- sync req counter is received

If no second update, everything is ok.

Thanks


-- 
    VaL



More information about the Xcb mailing list