Callbacks registered via display_set_output_configure_handler() are promised to be called when we know the current mode for the output. If the following order of events happens: 1. toytoolkit binds to a wl_output global 2. application registers an output configure handler 3. the wl_output.mode events are received
Then in step 2 we would call the callback with uninitialised output informations, giving it a 0x0 size. To avoid such race, do not call the callback from display_set_output_configure_handler() if the output has 0x0 size. The wl_output.mode event will be received later, and that will trigger the right call to the callback. Signed-off-by: Pekka Paalanen <[email protected]> --- clients/window.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/clients/window.c b/clients/window.c index 13363f8..9f44e64 100644 --- a/clients/window.c +++ b/clients/window.c @@ -3550,9 +3550,14 @@ display_set_output_configure_handler(struct display *display, if (!handler) return; - wl_list_for_each(output, &display->output_list, link) + wl_list_for_each(output, &display->output_list, link) { + if (output->allocation.width == 0 && + output->allocation.height == 0) + continue; + (*display->output_configure_handler)(output, display->user_data); + } } void -- 1.7.8.6 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
