From b2f957a9f192fa37286d3cc0bd89e6a34142aa51 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Mon, 15 Oct 2012 12:06:53 +0300 Subject: [PATCH] window: don't call output configure uninitialised 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 --- clients/window.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/clients/window.c b/clients/window.c index 91a2439f..efe164d2 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