summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Trevisan (TreviƱo) <mail@3v1n0.net>2020-03-26 06:41:33 +0100
committerRobert Ancell <robert.ancell@gmail.com>2020-06-26 02:01:27 +0000
commit689aee32920d5228ee79b72889182ffbc2796212 (patch)
treeed86a98d0d7dbad1322b966715ef27cf6c13c30e
parente501566cf6f34383d251223a06c55fdda4d2236b (diff)
downloadgnome-control-center-689aee32920d5228ee79b72889182ffbc2796212.tar.gz
user-panel: Add reference to selected user and clear on dispose
The object was wrongly unreffed (as ActUserManager has the ownership) on user switch, so add a reference instead when assigning it to our private ref and unref it on dispose.
-rw-r--r--panels/user-accounts/cc-user-panel.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/panels/user-accounts/cc-user-panel.c b/panels/user-accounts/cc-user-panel.c
index ee9cccd14..bde10675f 100644
--- a/panels/user-accounts/cc-user-panel.c
+++ b/panels/user-accounts/cc-user-panel.c
@@ -174,10 +174,9 @@ set_selected_user (CcUserPanel *self, CcCarouselItem *item)
{
uid_t uid;
- g_clear_object (&self->selected_user);
-
uid = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (item), "uid"));
- self->selected_user = act_user_manager_get_user_by_id (self->um, uid);
+ g_set_object (&self->selected_user,
+ act_user_manager_get_user_by_id (self->um, uid));
if (self->selected_user != NULL) {
show_user (self->selected_user, self);
@@ -1474,6 +1473,8 @@ cc_user_panel_dispose (GObject *object)
{
CcUserPanel *self = CC_USER_PANEL (object);
+ g_clear_object (&self->selected_user);
+
g_clear_object (&self->login_screen_settings);
g_clear_pointer ((GtkWidget **)&self->language_chooser, gtk_widget_destroy);