[PATCH] toytoolkit: match parent surface type when adding a subsurface

Manuel Bachmann manuel.bachmann at open.eurogiciel.org
Fri Apr 4 01:04:18 PDT 2014


When adding a subsurface (to display a tooltip) in toytoolkit,
we now get the parent window surface type (SHM or EGL) and
define the new surface type as the same.

This fixes crashes with tooltips in cases like having
Cairo-EGL available but running the X11 compositor.

Signed-off-by: Manuel Bachmann <manuel.bachmann at open.eurogiciel.org>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
---
 clients/window.c |    7 +++++++
 clients/window.h |    3 +++
 2 files changed, 10 insertions(+)

diff --git a/clients/window.c b/clients/window.c
index 5ba7322..d974165 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -4607,6 +4607,12 @@ window_set_buffer_type(struct window *window, enum window_buffer_type type)
 	window->main_surface->buffer_type = type;
 }
 
+enum window_buffer_type
+window_get_buffer_type(struct window *window)
+{
+	return window->main_surface->buffer_type;
+}
+
 void
 window_set_preferred_format(struct window *window,
 			    enum preferred_format format)
@@ -4624,6 +4630,7 @@ window_add_subsurface(struct window *window, void *data,
 	struct wl_subcompositor *subcompo = window->display->subcompositor;
 
 	surface = surface_create(window);
+	surface->buffer_type = window_get_buffer_type(window);
 	widget = widget_create(window, surface, data);
 	wl_list_init(&widget->link);
 	surface->widget = widget;
diff --git a/clients/window.h b/clients/window.h
index 38d574f..c6388a2 100644
--- a/clients/window.h
+++ b/clients/window.h
@@ -364,6 +364,9 @@ display_surface_damage(struct display *display, cairo_surface_t *cairo_surface,
 void
 window_set_buffer_type(struct window *window, enum window_buffer_type type);
 
+enum window_buffer_type
+window_get_buffer_type(struct window *window);
+
 int
 window_is_fullscreen(struct window *window);
 
-- 
1.7.10.4



More information about the wayland-devel mailing list