Fixes for dispose and finalize
* Add missing chain-up for dispose and finalize methods * ShellGenericContainer needs to destroy its children in dispose() * Fix variable naming and excess casts in st_label_dispose() https://bugzilla.gnome.org/show_bug.cgi?id=612511
This commit is contained in:
parent
c83883f1f7
commit
163b2d0403
@ -360,6 +360,8 @@ shell_app_dispose (GObject *object)
|
|||||||
_shell_app_remove_window (app, app->windows->data);
|
_shell_app_remove_window (app, app->windows->data);
|
||||||
|
|
||||||
disconnect_workspace_switch (app);
|
disconnect_workspace_switch (app);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS(shell_app_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -228,6 +228,17 @@ shell_generic_container_finalize (GObject *object)
|
|||||||
G_OBJECT_CLASS (shell_generic_container_parent_class)->finalize (object);
|
G_OBJECT_CLASS (shell_generic_container_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_generic_container_dispose (GObject *object)
|
||||||
|
{
|
||||||
|
ShellGenericContainerPrivate *priv = SHELL_GENERIC_CONTAINER (object)->priv;
|
||||||
|
|
||||||
|
while (priv->children)
|
||||||
|
clutter_actor_destroy (priv->children->data);
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (shell_generic_container_parent_class)->dispose (object);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_generic_container_class_init (ShellGenericContainerClass *klass)
|
shell_generic_container_class_init (ShellGenericContainerClass *klass)
|
||||||
{
|
{
|
||||||
@ -235,6 +246,7 @@ shell_generic_container_class_init (ShellGenericContainerClass *klass)
|
|||||||
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
|
||||||
|
|
||||||
gobject_class->finalize = shell_generic_container_finalize;
|
gobject_class->finalize = shell_generic_container_finalize;
|
||||||
|
gobject_class->dispose = shell_generic_container_dispose;
|
||||||
|
|
||||||
actor_class->get_preferred_width = shell_generic_container_get_preferred_width;
|
actor_class->get_preferred_width = shell_generic_container_get_preferred_width;
|
||||||
actor_class->get_preferred_height = shell_generic_container_get_preferred_height;
|
actor_class->get_preferred_height = shell_generic_container_get_preferred_height;
|
||||||
|
@ -63,6 +63,8 @@ st_drawing_area_dispose (GObject *object)
|
|||||||
cogl_handle_unref (priv->texture);
|
cogl_handle_unref (priv->texture);
|
||||||
priv->texture = COGL_INVALID_HANDLE;
|
priv->texture = COGL_INVALID_HANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (st_drawing_area_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -171,6 +171,8 @@ st_entry_dispose (GObject *object)
|
|||||||
clutter_actor_destroy (priv->entry);
|
clutter_actor_destroy (priv->entry);
|
||||||
priv->entry = NULL;
|
priv->entry = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (st_entry_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -180,6 +182,8 @@ st_entry_finalize (GObject *object)
|
|||||||
|
|
||||||
g_free (priv->hint);
|
g_free (priv->hint);
|
||||||
priv->hint = NULL;
|
priv->hint = NULL;
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (st_entry_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -93,6 +93,8 @@ st_im_text_dispose (GObject *object)
|
|||||||
|
|
||||||
g_object_unref (priv->im_context);
|
g_object_unref (priv->im_context);
|
||||||
priv->im_context = NULL;
|
priv->im_context = NULL;
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (st_im_text_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -172,9 +172,9 @@ st_label_allocate (ClutterActor *actor,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_label_dispose (GObject *actor)
|
st_label_dispose (GObject *object)
|
||||||
{
|
{
|
||||||
StLabelPrivate *priv = ST_LABEL (actor)->priv;
|
StLabelPrivate *priv = ST_LABEL (object)->priv;
|
||||||
|
|
||||||
if (priv->label)
|
if (priv->label)
|
||||||
{
|
{
|
||||||
@ -182,7 +182,7 @@ st_label_dispose (GObject *actor)
|
|||||||
priv->label = NULL;
|
priv->label = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
G_OBJECT_CLASS (st_label_parent_class)->dispose (G_OBJECT (actor));
|
G_OBJECT_CLASS (st_label_parent_class)->dispose (object);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user