[mutter/gbsneto/clutter-cleanups-part1: 10/22] clutter/stage: Subclass ClutterActor
- From: Robert Mader <rmader src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter/gbsneto/clutter-cleanups-part1: 10/22] clutter/stage: Subclass ClutterActor
- Date: Sat, 27 Jun 2020 13:36:34 +0000 (UTC)
commit 8d83dec044d36c27c6925820198e60cd28c4dc6f
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Fri Jun 26 16:17:13 2020 -0300
clutter/stage: Subclass ClutterActor
ClutterStage is the one and only subclass of ClutterGroup, but
it overrides basically everything specific to ClutterGroup to
mimic a ClutterActor. What a waste!
Subclass ClutterActor directly and remove all the now useless
vfunc overrides from ClutterStage. Adapt CallyStage to subclass
CallyActor as well.
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1332
clutter/clutter/cally/cally-stage.c | 2 +-
clutter/clutter/cally/cally-stage.h | 6 +--
clutter/clutter/clutter-stage.c | 90 +------------------------------------
clutter/clutter/clutter-stage.h | 6 +--
4 files changed, 8 insertions(+), 96 deletions(-)
---
diff --git a/clutter/clutter/cally/cally-stage.c b/clutter/clutter/cally/cally-stage.c
index 7c100aabf0..b32249211a 100644
--- a/clutter/clutter/cally/cally-stage.c
+++ b/clutter/clutter/cally/cally-stage.c
@@ -63,7 +63,7 @@ struct _CallyStagePrivate
G_DEFINE_TYPE_WITH_CODE (CallyStage,
cally_stage,
- CALLY_TYPE_GROUP,
+ CALLY_TYPE_ACTOR,
G_ADD_PRIVATE (CallyStage)
G_IMPLEMENT_INTERFACE (ATK_TYPE_WINDOW,
cally_stage_window_interface_init));
diff --git a/clutter/clutter/cally/cally-stage.h b/clutter/clutter/cally/cally-stage.h
index e8f676de5e..576ba6b81d 100644
--- a/clutter/clutter/cally/cally-stage.h
+++ b/clutter/clutter/cally/cally-stage.h
@@ -25,7 +25,7 @@
#error "Only <cally/cally.h> can be included directly."
#endif
-#include <cally/cally-group.h>
+#include <cally/cally-actor.h>
#include <clutter/clutter.h>
G_BEGIN_DECLS
@@ -52,7 +52,7 @@ typedef struct _CallyStagePrivate CallyStagePrivate;
struct _CallyStage
{
/*< private >*/
- CallyGroup parent;
+ CallyActor parent;
CallyStagePrivate *priv;
};
@@ -68,7 +68,7 @@ struct _CallyStage
struct _CallyStageClass
{
/*< private >*/
- CallyGroupClass parent_class;
+ CallyActorClass parent_class;
/* padding for future expansion */
gpointer _padding_dummy[16];
diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c
index 436ad2e4cb..954681bc57 100644
--- a/clutter/clutter/clutter-stage.c
+++ b/clutter/clutter/clutter-stage.c
@@ -192,61 +192,7 @@ static void clutter_stage_set_viewport (ClutterStage *stage,
float width,
float height);
-static void clutter_container_iface_init (ClutterContainerIface *iface);
-
-G_DEFINE_TYPE_WITH_CODE (ClutterStage, clutter_stage, CLUTTER_TYPE_GROUP,
- G_ADD_PRIVATE (ClutterStage)
- G_IMPLEMENT_INTERFACE (CLUTTER_TYPE_CONTAINER,
- clutter_container_iface_init))
-
-static void
-clutter_stage_real_add (ClutterContainer *container,
- ClutterActor *child)
-{
- clutter_actor_add_child (CLUTTER_ACTOR (container), child);
-}
-
-static void
-clutter_stage_real_remove (ClutterContainer *container,
- ClutterActor *child)
-{
- clutter_actor_remove_child (CLUTTER_ACTOR (container), child);
-}
-
-static void
-clutter_stage_real_raise (ClutterContainer *container,
- ClutterActor *child,
- ClutterActor *sibling)
-{
- clutter_actor_set_child_above_sibling (CLUTTER_ACTOR (container),
- child,
- sibling);
-}
-
-static void
-clutter_stage_real_lower (ClutterContainer *container,
- ClutterActor *child,
- ClutterActor *sibling)
-{
- clutter_actor_set_child_below_sibling (CLUTTER_ACTOR (container),
- child,
- sibling);
-}
-
-static void
-clutter_stage_real_sort_depth_order (ClutterContainer *container)
-{
-}
-
-static void
-clutter_container_iface_init (ClutterContainerIface *iface)
-{
- iface->add = clutter_stage_real_add;
- iface->remove = clutter_stage_real_remove;
- iface->raise = clutter_stage_real_raise;
- iface->lower = clutter_stage_real_lower;
- iface->sort_depth_order = clutter_stage_real_sort_depth_order;
-}
+G_DEFINE_TYPE_WITH_PRIVATE (ClutterStage, clutter_stage, CLUTTER_TYPE_ACTOR)
static void
clutter_stage_get_preferred_width (ClutterActor *self,
@@ -951,38 +897,6 @@ _clutter_stage_emit_after_paint (ClutterStage *stage)
g_signal_emit (stage, stage_signals[AFTER_PAINT], 0);
}
-/* If we don't implement this here, we get the paint function
- * from the deprecated clutter-group class, which doesn't
- * respect the Z order as it uses our empty sort_depth_order.
- */
-static void
-clutter_stage_paint (ClutterActor *self,
- ClutterPaintContext *paint_context)
-{
- ClutterActorIter iter;
- ClutterActor *child;
-
- clutter_actor_iter_init (&iter, self);
- while (clutter_actor_iter_next (&iter, &child))
- clutter_actor_paint (child, paint_context);
-}
-
-static void
-clutter_stage_pick (ClutterActor *self,
- ClutterPickContext *pick_context)
-{
- ClutterActorIter iter;
- ClutterActor *child;
-
- /* Note: we don't chain up to our parent as we don't want any geometry
- * emitted for the stage itself. The stage's pick id is effectively handled
- * by the call to cogl_clear done in clutter-main.c:_clutter_do_pick_async()
- */
- clutter_actor_iter_init (&iter, self);
- while (clutter_actor_iter_next (&iter, &child))
- clutter_actor_pick (child, pick_context);
-}
-
static gboolean
clutter_stage_get_paint_volume (ClutterActor *self,
ClutterPaintVolume *volume)
@@ -1950,8 +1864,6 @@ clutter_stage_class_init (ClutterStageClass *klass)
actor_class->allocate = clutter_stage_allocate;
actor_class->get_preferred_width = clutter_stage_get_preferred_width;
actor_class->get_preferred_height = clutter_stage_get_preferred_height;
- actor_class->paint = clutter_stage_paint;
- actor_class->pick = clutter_stage_pick;
actor_class->get_paint_volume = clutter_stage_get_paint_volume;
actor_class->realize = clutter_stage_realize;
actor_class->unrealize = clutter_stage_unrealize;
diff --git a/clutter/clutter/clutter-stage.h b/clutter/clutter/clutter-stage.h
index fb96ef4369..f3006f093b 100644
--- a/clutter/clutter/clutter-stage.h
+++ b/clutter/clutter/clutter-stage.h
@@ -28,8 +28,8 @@
#error "Only <clutter/clutter.h> can be included directly."
#endif
+#include <clutter/clutter-actor.h>
#include <clutter/clutter-types.h>
-#include <clutter/clutter-group.h>
#include <clutter/clutter-stage-view.h>
G_BEGIN_DECLS
@@ -56,7 +56,7 @@ typedef struct _ClutterStagePrivate ClutterStagePrivate;
struct _ClutterStage
{
/*< private >*/
- ClutterGroup parent_instance;
+ ClutterActor parent_instance;
ClutterStagePrivate *priv;
};
@@ -74,7 +74,7 @@ struct _ClutterStage
struct _ClutterStageClass
{
/*< private >*/
- ClutterGroupClass parent_class;
+ ClutterActorClass parent_class;
/*< public >*/
/* signals */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]