diff options
author | Benjamin Otte <otte@redhat.com> | 2018-03-21 02:45:43 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2018-03-21 04:10:06 +0100 |
commit | 101cf7dcbd234f36fda5a4232ba48b3bbbcbd815 (patch) | |
tree | 66e3545cbc02d57597df01051c7183f4c6e23634 /gdk | |
parent | f260e76ede4da77c3277c864f5f2dd122f1b12a2 (diff) | |
download | gtk+-101cf7dcbd234f36fda5a4232ba48b3bbbcbd815.tar.gz |
surface: Stop shaping native children of csw surfaces
We don't have them anymore and they are goig away anyway.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdksurface.c | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 5c7233bf23..b11b884753 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -593,80 +593,6 @@ remove_child_area (GdkSurface *surface, } } -static gboolean -should_apply_clip_as_shape (GdkSurface *surface) -{ - return - gdk_surface_has_impl (surface) && - /* Not for non-shaped toplevels */ - (surface->shape != NULL || surface->applied_shape) && - /* or for foreign surfaces */ - surface->surface_type != GDK_SURFACE_FOREIGN; -} - -static void -apply_shape (GdkSurface *surface, - cairo_region_t *region) -{ - GdkSurfaceImplClass *impl_class; - - /* We trash whether we applied a shape so that - we can avoid unsetting it many times, which - could happen in e.g. apply_clip_as_shape as - surfaces get resized */ - impl_class = GDK_SURFACE_IMPL_GET_CLASS (surface->impl); - if (region) - impl_class->shape_combine_region (surface, - region, 0, 0); - else if (surface->applied_shape) - impl_class->shape_combine_region (surface, - NULL, 0, 0); - - surface->applied_shape = region != NULL; -} - -static gboolean -region_rect_equal (const cairo_region_t *region, - const GdkRectangle *rect) -{ - GdkRectangle extents; - - if (cairo_region_num_rectangles (region) != 1) - return FALSE; - - cairo_region_get_extents (region, &extents); - - return extents.x == rect->x && - extents.y == rect->y && - extents.width == rect->width && - extents.height == rect->height; -} - -static void -apply_clip_as_shape (GdkSurface *surface) -{ - GdkRectangle r; - cairo_region_t *region; - - r.x = r.y = 0; - r.width = surface->width; - r.height = surface->height; - - region = cairo_region_copy (surface->clip_region); - remove_sibling_overlapped_area (surface, region); - - /* We only apply the clip region if would differ - from the actual clip region implied by the size - of the surface. This is to avoid unneccessarily - adding meaningless shapes to all native subsurfaces */ - if (!region_rect_equal (region, &r)) - apply_shape (surface, region); - else - apply_shape (surface, NULL); - - cairo_region_destroy (region); -} - static void recompute_visible_regions_internal (GdkSurface *private, gboolean recalculate_clip, @@ -724,9 +650,6 @@ recompute_visible_regions_internal (GdkSurface *private, /* Convert from parent coords to surface coords */ cairo_region_translate (new_clip, -private->x, -private->y); - - if (should_apply_clip_as_shape (private) && private->shape) - cairo_region_intersect (new_clip, private->shape); } else new_clip = cairo_region_create (); @@ -776,11 +699,6 @@ static void recompute_visible_regions (GdkSurface *private, gboolean recalculate_children) { - GdkSurface *toplevel; - - toplevel = gdk_surface_get_toplevel (private); - toplevel->geometry_dirty = TRUE; - recompute_visible_regions_internal (private, TRUE, recalculate_children); @@ -2343,14 +2261,6 @@ _gdk_surface_process_updates_recurse (GdkSurface *surface, cairo_region_destroy (clipped_expose_region); } - -static void -gdk_surface_update_native_shapes (GdkSurface *surface) -{ - if (should_apply_clip_as_shape (surface)) - apply_clip_as_shape (surface); -} - /* Process and remove any invalid area on the native surface by creating * expose events for the surface and all non-native descendants. */ @@ -2358,14 +2268,6 @@ static void gdk_surface_process_updates_internal (GdkSurface *surface) { GdkSurfaceImplClass *impl_class; - GdkSurface *toplevel; - - toplevel = gdk_surface_get_toplevel (surface); - if (toplevel->geometry_dirty) - { - gdk_surface_update_native_shapes (toplevel); - toplevel->geometry_dirty = FALSE; - } /* Ensure the surface lives while updating it */ g_object_ref (surface); |