[PATCH 5/9] compositor: fix shell panel and background setup

Kristian Høgsberg krh at bitplanet.net
Tue Nov 15 11:22:23 PST 2011


On Tue, Nov 15, 2011 at 6:34 AM, Pekka Paalanen <ppaalanen at gmail.com> wrote:
> The problem was diagnosed by Benjamin Franzke. This patch is a quick fix
> he showed, extended to fix also the background.
>
> If wlsc_surface has no output assigned, the 'frame' event is never sent.
> This causes dri2_swap_buffers() in Mesa (wayland platform) to spin on
> wl_display_iterate() only reading mesages. Therefore messages are never
> actually sent again.
>
> This patch fixes panel button hilighting (panel redraws altogether), and
> also screen unlocking.

Skipping this one, no longer necessary now that we don't throw away
surface.frame callbacks.

Kristian

> Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
> Cc: Benjamin Franzke <benjaminfranzke at googlemail.com>
> ---
>  compositor/shell.c |    4 ++++
>  1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/compositor/shell.c b/compositor/shell.c
> index f3e2220..1c8231a 100644
> --- a/compositor/shell.c
> +++ b/compositor/shell.c
> @@ -781,7 +781,9 @@ desktop_shell_set_background(struct wl_client *client,
>        struct wlsc_output *output =
>                container_of(shell->compositor->output_list.next,
>                             struct wlsc_output, link);
> +       struct wlsc_surface *es = surface_resource->data;
>
> +       es->output = output;
>        shell->background = surface_resource->data;
>        shell->background_listener.func = handle_background_surface_destroy;
>        wl_list_insert(&surface_resource->destroy_listener_list,
> @@ -814,7 +816,9 @@ desktop_shell_set_panel(struct wl_client *client,
>        struct wlsc_output *output =
>                container_of(shell->compositor->output_list.next,
>                             struct wlsc_output, link);
> +       struct wlsc_surface *es = surface_resource->data;
>
> +       es->output = output;
>        shell->panel = surface_resource->data;
>
>        shell->panel_listener.func = handle_panel_surface_destroy;
> --
> 1.7.3.4
>
>


More information about the wayland-devel mailing list