[PATCH weston] window: don't call output configure uninitialised
Kristian Høgsberg
hoegsberg at gmail.com
Mon Oct 15 10:08:56 PDT 2012
On Mon, Oct 15, 2012 at 12:06:53PM +0300, Pekka Paalanen wrote:
> 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 <ppaalanen at gmail.com>
Yup, that makes toytoolkit client that use the output callbacks work
again. Thanks, committed.
Kristian
> ---
> 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
>
More information about the wayland-devel
mailing list