<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On 12 December 2014 at 13:24, Pekka Paalanen <span dir="ltr"><<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Fri,  5 Dec 2014 13:49:40 +0100<br>
Marek Chalupa <<a href="mailto:mchqwerty@gmail.com">mchqwerty@gmail.com</a>> wrote:<br>
<br>
> wl_display_dispatch() just dispatches events that are in<br>
> default and display queues and if there are no events,<br>
> then it will wait for them. But only dispatching<br>
> the events doesn't guarantee that we got all the global announcements,<br>
> we need to do sync too. Therefore use wl_display_roundtrip() instead<br>
> of wl_display_dispatch().<br>
><br>
> Signed-off-by: Marek Chalupa <<a href="mailto:mchqwerty@gmail.com">mchqwerty@gmail.com</a>><br>
> ---<br>
>  clients/window.c | 2 +-<br>
>  1 file changed, 1 insertion(+), 1 deletion(-)<br>
><br>
> diff --git a/clients/window.c b/clients/window.c<br>
> index cc1e272..c5082ba 100644<br>
> --- a/clients/window.c<br>
> +++ b/clients/window.c<br>
> @@ -5527,7 +5527,7 @@ display_create(int *argc, char *argv[])<br>
>       d->registry = wl_display_get_registry(d->display);<br>
>       wl_registry_add_listener(d->registry, &registry_listener, d);<br>
><br>
> -     if (wl_display_dispatch(d->display) < 0) {<br>
> +     if (wl_display_roundtrip(d->display) < 0) {<br>
>               fprintf(stderr, "Failed to process Wayland connection: %m\n");<br>
>               return NULL;<br>
>       }<br>
<br>
</div></div>Very true, pushed.<br>
<br>
I tried to look quickly, but I couldn't see it; the globals that send<br>
initial events on bind, like wl_shm.format - do we have the 2nd<br>
roundtrip for those somewhere?<br>
<br></blockquote><div><br></div><div>Nope, not in display_create() (or functions called from it). However, in the current code everything that depends<br></div><div>on the wl_shm.format (which is the only bind in global handler) is called from some handler (if I haven't overlooked something),<br></div><div>so it works, because the handler is called after the wl_shm.format is processed.<br><br></div><div>Nevertheless, In the future it could get broken, because some functions that depend on wl_shm.format<br></div><div>are not static, so if programmer use them right after display_create(), the wl_shm.format events do not need to be<br></div><div>dispatched by that time.<br><br></div><div>So maybe follow-up patch would be good.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
pq<br></blockquote><div><br></div><div>Regards,<br>Marek <br></div></div></div></div>