toytoolkit: match parent surface type when adding a subsurface
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@open.eurogiciel.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
committed by
Kristian Høgsberg
parent
27efc06530
commit
cd186fbfaf
@@ -4610,6 +4610,12 @@ window_set_buffer_type(struct window *window, enum window_buffer_type type)
|
|||||||
window->main_surface->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
|
void
|
||||||
window_set_preferred_format(struct window *window,
|
window_set_preferred_format(struct window *window,
|
||||||
enum preferred_format format)
|
enum preferred_format format)
|
||||||
@@ -4627,6 +4633,7 @@ window_add_subsurface(struct window *window, void *data,
|
|||||||
struct wl_subcompositor *subcompo = window->display->subcompositor;
|
struct wl_subcompositor *subcompo = window->display->subcompositor;
|
||||||
|
|
||||||
surface = surface_create(window);
|
surface = surface_create(window);
|
||||||
|
surface->buffer_type = window_get_buffer_type(window);
|
||||||
widget = widget_create(window, surface, data);
|
widget = widget_create(window, surface, data);
|
||||||
wl_list_init(&widget->link);
|
wl_list_init(&widget->link);
|
||||||
surface->widget = widget;
|
surface->widget = widget;
|
||||||
|
|||||||
@@ -364,6 +364,9 @@ display_surface_damage(struct display *display, cairo_surface_t *cairo_surface,
|
|||||||
void
|
void
|
||||||
window_set_buffer_type(struct window *window, enum window_buffer_type type);
|
window_set_buffer_type(struct window *window, enum window_buffer_type type);
|
||||||
|
|
||||||
|
enum window_buffer_type
|
||||||
|
window_get_buffer_type(struct window *window);
|
||||||
|
|
||||||
int
|
int
|
||||||
window_is_fullscreen(struct window *window);
|
window_is_fullscreen(struct window *window);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user