From 8b21fb4f962e17a041f4c5913f08310b88526ecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Mon, 19 Oct 2020 12:27:25 +0200 Subject: clutter: Remove ClutterRedrawFlags ClutterRedrawFlags are a way to give Clutter additional context about what it needs to redraw. There currently is only one flag defined, CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION, this flag would clip the redraw to the actors current allocation. Since ClutterActor also provides the clip_to_allocation property (which affects the paint volume of the actor instead of only one redraw), the additional CLIPPED_TO_ALLOCATION flag seems unnecessary. It's also only defined to be used privately in Clutter, which it never is, so let's remove it. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1527 --- clutter/clutter/clutter-actor-private.h | 19 -------- clutter/clutter/clutter-actor.c | 79 ++------------------------------- clutter/clutter/clutter-effect.c | 1 - 3 files changed, 4 insertions(+), 95 deletions(-) diff --git a/clutter/clutter/clutter-actor-private.h b/clutter/clutter/clutter-actor-private.h index 5ebefbbeb..438f588a6 100644 --- a/clutter/clutter/clutter-actor-private.h +++ b/clutter/clutter/clutter-actor-private.h @@ -26,23 +26,6 @@ G_BEGIN_DECLS -/*< private > - * ClutterRedrawFlags: - * @CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION: Tells clutter the maximum - * extents of what needs to be redrawn lies within the actors - * current allocation. (Only use this for 2D actors though because - * any actor with depth may be projected outside of its allocation) - * - * Flags passed to the clutter_actor_queue_redraw_with_clip () - * function - * - * Since: 1.6 - */ -typedef enum -{ - CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION = 1 << 0 -} ClutterRedrawFlags; - /*< private > * ClutterActorTraverseFlags: * CLUTTER_ACTOR_TRAVERSE_DEPTH_FIRST: Traverse the graph in @@ -246,10 +229,8 @@ void _clutter_actor_set_has_key_focus gboolean has_key_focus); void _clutter_actor_queue_redraw_with_clip (ClutterActor *self, - ClutterRedrawFlags flags, const ClutterPaintVolume *clip_volume); void _clutter_actor_queue_redraw_full (ClutterActor *self, - ClutterRedrawFlags flags, const ClutterPaintVolume *volume, ClutterEffect *effect); diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index 10a733690..5d45619a4 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -1752,7 +1752,7 @@ clutter_actor_queue_redraw_on_parent (ClutterActor *self) return; pv = clutter_actor_get_transformed_paint_volume (self, self->priv->parent); - _clutter_actor_queue_redraw_with_clip (self->priv->parent, 0, pv); + _clutter_actor_queue_redraw_with_clip (self->priv->parent, pv); } /** @@ -8054,30 +8054,12 @@ _clutter_actor_finish_queue_redraw (ClutterActor *self, _clutter_actor_propagate_queue_redraw (self, self, pv); } -static void -_clutter_actor_get_allocation_clip (ClutterActor *self, - ClutterActorBox *clip) -{ - ClutterActorPrivate *priv = self->priv; - - /* NB: clutter_actor_queue_redraw_with_clip expects a box in the - * actor's own coordinate space but the allocation is in parent - * coordinates */ - clip->x1 = 0; - clip->y1 = 0; - clip->x2 = priv->allocation.x2 - priv->allocation.x1; - clip->y2 = priv->allocation.y2 - priv->allocation.y1; -} - void _clutter_actor_queue_redraw_full (ClutterActor *self, - ClutterRedrawFlags flags, const ClutterPaintVolume *volume, ClutterEffect *effect) { ClutterActorPrivate *priv = self->priv; - ClutterPaintVolume allocation_pv; - ClutterPaintVolume *pv = NULL; ClutterActor *stage; /* Here's an outline of the actor queue redraw mechanism: @@ -8185,45 +8167,11 @@ _clutter_actor_queue_redraw_full (ClutterActor *self, if (CLUTTER_ACTOR_IN_DESTRUCTION (stage)) return; - if (flags & CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION) - { - ClutterActorBox allocation_clip; - graphene_point3d_t origin; - - /* If the actor doesn't have a valid allocation then we will - * queue a full stage redraw. */ - if (priv->needs_allocation) - { - /* NB: NULL denotes an undefined clip which will result in a - * full redraw... */ - _clutter_actor_propagate_queue_redraw (self, self, NULL); - return; - } - - _clutter_paint_volume_init_static (&allocation_pv, self); - pv = &allocation_pv; - - _clutter_actor_get_allocation_clip (self, &allocation_clip); - - origin.x = allocation_clip.x1; - origin.y = allocation_clip.y1; - origin.z = 0; - clutter_paint_volume_set_origin (pv, &origin); - clutter_paint_volume_set_width (pv, - allocation_clip.x2 - allocation_clip.x1); - clutter_paint_volume_set_height (pv, - allocation_clip.y2 - - allocation_clip.y1); - } - self->priv->queue_redraw_entry = _clutter_stage_queue_actor_redraw (CLUTTER_STAGE (stage), priv->queue_redraw_entry, self, - pv ? pv : volume); - - if (pv) - clutter_paint_volume_free (pv); + volume); /* If this is the first redraw queued then we can directly use the effect parameter */ @@ -8293,7 +8241,6 @@ clutter_actor_queue_redraw (ClutterActor *self) g_return_if_fail (CLUTTER_IS_ACTOR (self)); _clutter_actor_queue_redraw_full (self, - 0, /* flags */ NULL, /* clip volume */ NULL /* effect */); } @@ -8301,27 +8248,13 @@ clutter_actor_queue_redraw (ClutterActor *self) /*< private > * _clutter_actor_queue_redraw_with_clip: * @self: A #ClutterActor - * @flags: A mask of #ClutterRedrawFlags controlling the behaviour of - * this queue redraw. * @volume: A #ClutterPaintVolume describing the bounds of what needs to be - * redrawn or %NULL if you are just using a @flag to state your - * desired clipping. + * redrawn or %NULL if to use the actors own paint volume. * * Queues up a clipped redraw of an actor and any children. The redraw * occurs once the main loop becomes idle (after the current batch of * events has been processed, roughly). * - * If no flags are given the clip volume is defined by @volume - * specified in actor coordinates and tells Clutter that only content - * within this volume has been changed so Clutter can optionally - * optimize the redraw. - * - * If the %CLUTTER_REDRAW_CLIPPED_TO_ALLOCATION @flag is used, @volume - * should be %NULL and this tells Clutter to use the actor's current - * allocation as a clip box. This flag can only be used for 2D actors, - * because any actor with depth may be projected outside its - * allocation. - * * Applications rarely need to call this, as redraws are handled * automatically by modification functions. * @@ -8337,11 +8270,9 @@ clutter_actor_queue_redraw (ClutterActor *self) */ void _clutter_actor_queue_redraw_with_clip (ClutterActor *self, - ClutterRedrawFlags flags, const ClutterPaintVolume *volume) { _clutter_actor_queue_redraw_full (self, - flags, /* flags */ volume, /* clip volume */ NULL /* effect */); } @@ -8412,7 +8343,7 @@ clutter_actor_queue_redraw_with_clip (ClutterActor *self, clutter_paint_volume_set_width (&volume, clip->width); clutter_paint_volume_set_height (&volume, clip->height); - _clutter_actor_queue_redraw_full (self, 0, &volume, NULL); + _clutter_actor_queue_redraw_full (self, &volume, NULL); clutter_paint_volume_free (&volume); } @@ -10872,7 +10803,6 @@ clutter_actor_set_opacity_internal (ClutterActor *self, is no flatten effect yet then this is equivalent to queueing a full redraw */ _clutter_actor_queue_redraw_full (self, - 0, /* flags */ NULL, /* clip */ priv->flatten_effect); @@ -11071,7 +11001,6 @@ clutter_actor_set_offscreen_redirect (ClutterActor *self, still able to continue the paint anyway. If there is no effect then this is equivalent to queuing a full redraw */ _clutter_actor_queue_redraw_full (self, - 0, /* flags */ NULL, /* clip */ priv->flatten_effect); diff --git a/clutter/clutter/clutter-effect.c b/clutter/clutter/clutter-effect.c index 9ef269daf..eef72d59b 100644 --- a/clutter/clutter/clutter-effect.c +++ b/clutter/clutter/clutter-effect.c @@ -356,7 +356,6 @@ clutter_effect_queue_repaint (ClutterEffect *effect) /* If the effect has no actor then nothing needs to be done */ if (actor != NULL) _clutter_actor_queue_redraw_full (actor, - 0, /* flags */ NULL, /* clip volume */ effect /* effect */); } -- cgit v1.2.1