static void clutter_group_dispose (GObject *object) { ClutterGroup *self = CLUTTER_GROUP (object); ClutterGroupPrivate *priv = self->priv; /* Note: we are careful to consider that destroying children could * have the side-effect of destroying other children so * priv->children may be modified during clutter_actor_destroy. */ while (priv->children) { ClutterActor *child = priv->children->data; priv->children = g_list_delete_link (priv->children, priv->children); clutter_actor_destroy (child); } if (priv->layout) { clutter_layout_manager_set_container (priv->layout, NULL); g_object_unref (priv->layout); priv->layout = NULL; } G_OBJECT_CLASS (clutter_group_parent_class)->dispose (object); }
static VALUE rbclt_layout_manager_set_container (VALUE self, VALUE container) { ClutterLayoutManager *manager = CLUTTER_LAYOUT_MANAGER (RVAL2GOBJ (self)); ClutterContainer *g_container = CLUTTER_CONTAINER (RVAL2GOBJ (container)); clutter_layout_manager_set_container (manager, g_container); return Qnil; }
static void clutter_group_init (ClutterGroup *self) { self->priv = CLUTTER_GROUP_GET_PRIVATE (self); self->priv->layout = clutter_fixed_layout_new (); g_object_ref_sink (self->priv->layout); clutter_layout_manager_set_container (self->priv->layout, CLUTTER_CONTAINER (self)); }
static void champlain_group_init (ChamplainGroup *self) { self->priv = GET_PRIVATE (self); self->priv->layout = clutter_fixed_layout_new (); g_object_ref_sink (self->priv->layout); self->priv->children = NULL; self->priv->children_end = NULL; clutter_layout_manager_set_container (self->priv->layout, CLUTTER_CONTAINER (self)); }
static inline void set_layout_manager (ClutterBox *self, ClutterLayoutManager *manager) { ClutterBoxPrivate *priv = self->priv; if (priv->manager == manager) return; if (priv->manager != NULL) { if (priv->changed_id != 0) g_signal_handler_disconnect (priv->manager, priv->changed_id); clutter_layout_manager_set_container (priv->manager, NULL); g_object_unref (priv->manager); priv->manager = NULL; priv->changed_id = 0; } if (manager != NULL) { priv->manager = g_object_ref_sink (manager); clutter_layout_manager_set_container (manager, CLUTTER_CONTAINER (self)); priv->changed_id = g_signal_connect_swapped (priv->manager, "layout-changed", G_CALLBACK (clutter_actor_queue_relayout), self); } clutter_actor_queue_relayout (CLUTTER_ACTOR (self)); _clutter_notify_by_pspec (G_OBJECT (self), obj_props[PROP_LAYOUT_MANAGER]); }
static void champlain_group_dispose (GObject *object) { ChamplainGroup *self = CHAMPLAIN_GROUP (object); ChamplainGroupPrivate *priv = self->priv; if (priv->children) { g_list_foreach (priv->children, (GFunc) clutter_actor_destroy, NULL); g_list_free (priv->children); priv->children = NULL; priv->children_end = NULL; } if (priv->layout) { clutter_layout_manager_set_container (priv->layout, NULL); g_object_unref (priv->layout); priv->layout = NULL; } G_OBJECT_CLASS (champlain_group_parent_class)->dispose (object); }