Wayland: fix a crash in opaque region handling
We may get a NULL region passed to the backend, which means 'nothing is opaque'. In that case, don't crash, but pass the information on to the compositor. http://bugzilla.gnome.org/show_bug.cgi?id=709854
This commit is contained in:
@ -2070,7 +2070,7 @@ gdk_wayland_window_set_opaque_region (GdkWindow *window,
|
|||||||
cairo_region_t *region)
|
cairo_region_t *region)
|
||||||
{
|
{
|
||||||
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
|
||||||
struct wl_region *wl_region;
|
struct wl_region *wl_region = NULL;
|
||||||
|
|
||||||
if (GDK_WINDOW_DESTROYED (window))
|
if (GDK_WINDOW_DESTROYED (window))
|
||||||
return;
|
return;
|
||||||
@ -2078,11 +2078,12 @@ gdk_wayland_window_set_opaque_region (GdkWindow *window,
|
|||||||
if (!impl->surface)
|
if (!impl->surface)
|
||||||
gdk_wayland_window_create_surface (window);
|
gdk_wayland_window_create_surface (window);
|
||||||
|
|
||||||
|
if (region != NULL)
|
||||||
wl_region = wl_region_from_cairo_region (GDK_WAYLAND_DISPLAY (gdk_window_get_display (window)), region);
|
wl_region = wl_region_from_cairo_region (GDK_WAYLAND_DISPLAY (gdk_window_get_display (window)), region);
|
||||||
if (wl_region == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
wl_surface_set_opaque_region (impl->surface, wl_region);
|
wl_surface_set_opaque_region (impl->surface, wl_region);
|
||||||
|
|
||||||
|
if (wl_region != NULL)
|
||||||
wl_region_destroy (wl_region);
|
wl_region_destroy (wl_region);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user