summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ã…dahl <jadahl@gmail.com>2020-08-16 21:35:16 +0200
committerGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>2020-08-17 13:13:55 +0000
commit3dfe3a248db5ae9e27e850682cfe203fd0b9e3d1 (patch)
treea41ce20fc83395f16c23e9f09515139556dd68c9
parentdf5af58d05c020cb5c1a6dc3d208ae0af2cd9c20 (diff)
downloadmutter-3dfe3a248db5ae9e27e850682cfe203fd0b9e3d1.tar.gz
stage-view/cogl: Add frame listener in constructor()
The onscreens are set on construction now, so no need to wait for it to be set after. https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1407
-rw-r--r--clutter/clutter/cogl/clutter-stage-cogl.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/clutter/clutter/cogl/clutter-stage-cogl.c b/clutter/clutter/cogl/clutter-stage-cogl.c
index 4b07a4057..b53a6c16a 100644
--- a/clutter/clutter/cogl/clutter-stage-cogl.c
+++ b/clutter/clutter/cogl/clutter-stage-cogl.c
@@ -757,8 +757,22 @@ frame_cb (CoglOnscreen *onscreen,
}
static void
-on_framebuffer_set (ClutterStageView *view)
+clutter_stage_view_cogl_dispose (GObject *object)
+{
+ ClutterStageViewCogl *view_cogl = CLUTTER_STAGE_VIEW_COGL (object);
+ ClutterStageViewCoglPrivate *view_priv =
+ clutter_stage_view_cogl_get_instance_private (view_cogl);
+
+ g_clear_handle_id (&view_priv->notify_presented_handle_id, g_source_remove);
+ g_clear_pointer (&view_priv->damage_history, clutter_damage_history_free);
+
+ G_OBJECT_CLASS (clutter_stage_view_cogl_parent_class)->dispose (object);
+}
+
+static void
+clutter_stage_view_cogl_constructed (GObject *object)
{
+ ClutterStageView *view = CLUTTER_STAGE_VIEW (view_cogl);
CoglFramebuffer *framebuffer;
framebuffer = clutter_stage_view_get_onscreen (view);
@@ -770,19 +784,8 @@ on_framebuffer_set (ClutterStageView *view)
view,
NULL);
}
-}
-static void
-clutter_stage_view_cogl_dispose (GObject *object)
-{
- ClutterStageViewCogl *view_cogl = CLUTTER_STAGE_VIEW_COGL (object);
- ClutterStageViewCoglPrivate *view_priv =
- clutter_stage_view_cogl_get_instance_private (view_cogl);
-
- g_clear_handle_id (&view_priv->notify_presented_handle_id, g_source_remove);
- g_clear_pointer (&view_priv->damage_history, clutter_damage_history_free);
-
- G_OBJECT_CLASS (clutter_stage_view_cogl_parent_class)->dispose (object);
+ G_OBJECT_CLASS (clutter_stage_view_cogl_parent_class)->constructed (object);
}
static void
@@ -792,9 +795,6 @@ clutter_stage_view_cogl_init (ClutterStageViewCogl *view_cogl)
clutter_stage_view_cogl_get_instance_private (view_cogl);
view_priv->damage_history = clutter_damage_history_new ();
-
- g_signal_connect (view_cogl, "notify::framebuffer",
- G_CALLBACK (on_framebuffer_set), NULL);
}
static void
@@ -802,5 +802,6 @@ clutter_stage_view_cogl_class_init (ClutterStageViewCoglClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ object_class->constructed = clutter_stage_view_cogl_constructed;
object_class->dispose = clutter_stage_view_cogl_dispose;
}