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 <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]> --- 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 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
