weston/libweston
Pekka Paalanen b07de934cc compositor-wayland: avoid recursive dispatch with wl_outputs
Calling wl_display_roundtrip() from within a Wayland event handler means
we will re-enter event dispatch, that is, it will lead to recursive
dispatch. Even if libwayland-client was safe, this would lead to
unexpected code paths: the first event handler function has not returned
when other event handler functions may get called. In this particular
case it maybe didn't hurt, but it's still a fragile pattern to use.

Replace the wl_display_roundtrip() with a manual sync callback to do the
work.

This does not break the wayland-backend initialization sequence, because
sprawl_across_outputs was set only after the roundtrip to ensure
wl_registry globals have been received so the code would not have been
hit anyway, and weston_backend_init() also has a second roundtrip that
ensures the per wl_output events have been received before continuing.

For wayland-backend output hotplug the change is insignificant because
it will only delay the output creation a bit, and the parent outputs are
not processed anywhere in between.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Quentin Glidic <sardemff7+git@sardemff7.net>
Acked-by: Daniel Stone <daniels@collabora.com>
2017-10-23 10:29:42 +03:00
..
2016-07-26 16:26:08 -07:00
2016-06-23 17:44:54 +03:00
2017-07-03 16:41:38 +01:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-06-23 17:44:54 +03:00
2016-07-26 16:26:08 -07:00