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

Pekka Paalanen ppaalanen at gmail.com
Tue Nov 15 03:34:52 PST 2011


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.

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