[mutter/wip/carlosg/reuse-paint-volumes: 57/59] compositor: Do not optimize obscured areas away in paint volumes



commit ec8138773a417976a260619099a1649306a0a495
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sat Apr 28 18:10:49 2018 +0200

    compositor: Do not optimize obscured areas away in paint volumes
    
    This optimization was presumably added before Clutter was able to
    invalidate selected regions of an actor. Paint volumes are supposed
    to be invariable as long as the actor conditions don't change.
    Stacking of other actors shouldn't affect the paint volume, so it's
    actually wrong to optimize those areas away here.

 src/compositor/meta-shaped-texture.c | 37 +-----------------------------------
 1 file changed, 1 insertion(+), 36 deletions(-)
---
diff --git a/src/compositor/meta-shaped-texture.c b/src/compositor/meta-shaped-texture.c
index 0240c067c..6f4d3acbb 100644
--- a/src/compositor/meta-shaped-texture.c
+++ b/src/compositor/meta-shaped-texture.c
@@ -694,46 +694,11 @@ effective_unobscured_region (MetaShapedTexture *self)
   return priv->unobscured_region;
 }
 
-static gboolean
-get_unobscured_bounds (MetaShapedTexture     *self,
-                       cairo_rectangle_int_t *unobscured_bounds)
-{
-  cairo_region_t *unobscured_region = effective_unobscured_region (self);
-
-  if (unobscured_region)
-    {
-      cairo_region_get_extents (unobscured_region, unobscured_bounds);
-      return TRUE;
-    }
-  else
-    return FALSE;
-}
-
 static gboolean
 meta_shaped_texture_get_paint_volume (ClutterActor *actor,
                                       ClutterPaintVolume *volume)
 {
-  MetaShapedTexture *self = META_SHAPED_TEXTURE (actor);
-  ClutterActorBox box;
-  cairo_rectangle_int_t unobscured_bounds;
-
-  if (!clutter_actor_has_allocation (actor))
-    return FALSE;
-
-  clutter_actor_get_allocation_box (actor, &box);
-
-  if (get_unobscured_bounds (self, &unobscured_bounds))
-    {
-      box.x1 = MAX (unobscured_bounds.x, box.x1);
-      box.x2 = MIN (unobscured_bounds.x + unobscured_bounds.width, box.x2);
-      box.y1 = MAX (unobscured_bounds.y, box.y1);
-      box.y2 = MIN (unobscured_bounds.y + unobscured_bounds.height, box.y2);
-    }
-  box.x2 = MAX (box.x2, box.x1);
-  box.y2 = MAX (box.y2, box.y1);
-
-  clutter_paint_volume_union_box (volume, &box);
-  return TRUE;
+  return clutter_paint_volume_set_from_allocation (volume, actor);
 }
 
 void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]