From fc9aabb1ecb8911abdfb0e66b328c56c23295b2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Sat, 14 Sep 2024 11:01:15 +0200 Subject: [PATCH] calls-manager: Keep ref on list models MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The gtk_*list_model_new() functions are `transfer: full` for the model. Since we keep accessing the underlying models we keep the refs for clear ownership and drop them in finalize. Signed-off-by: Guido Günther Part-of: --- src/calls-manager.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calls-manager.c b/src/calls-manager.c index 67a2412..d7d557a 100644 --- a/src/calls-manager.c +++ b/src/calls-manager.c @@ -459,6 +459,8 @@ calls_manager_finalize (GObject *object) CallsManager *self = CALLS_MANAGER (object); g_clear_object (&self->contacts_provider); + g_clear_object (&self->origins); + g_clear_object (&self->origins_flat); G_OBJECT_CLASS (calls_manager_parent_class)->finalize (object); } @@ -602,7 +604,7 @@ calls_manager_init (CallsManager *self) self->state_flags = CALLS_MANAGER_FLAGS_UNKNOWN; self->origins = g_list_store_new (G_TYPE_LIST_MODEL); /* list of lists */ - self->origins_flat = gtk_flatten_list_model_new (G_LIST_MODEL (self->origins)); + self->origins_flat = gtk_flatten_list_model_new (G_LIST_MODEL (g_object_ref (self->origins))); providers = calls_plugin_manager_get_providers (plugin_manager); g_signal_connect_object (providers, @@ -622,7 +624,7 @@ calls_manager_init (CallsManager *self) GtkFilter* filter = GTK_FILTER (gtk_custom_filter_new (match_origin_supports_protocol, (gpointer) protocols[i], NULL)); GtkFilterListModel *f_list = - gtk_filter_list_model_new (G_LIST_MODEL (self->origins_flat), filter); + gtk_filter_list_model_new (G_LIST_MODEL (g_object_ref (self->origins_flat)), filter); g_debug ("Adding filter list model for protocol '%s'", protocols[i]); g_hash_table_insert (self->origins_by_protocol,