From a28ac0d3adbcaab9ee35492476ed99476a44a835 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 10:27:37 +0200 Subject: [PATCH 01/11] osk-panel: Silence debug message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Guido Günther Part-of: --- src/ms-osk-panel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ms-osk-panel.c b/src/ms-osk-panel.c index c4e14f9e..3b0bae28 100644 --- a/src/ms-osk-panel.c +++ b/src/ms-osk-panel.c @@ -531,7 +531,7 @@ ms_osk_panel_init_pos_completer (MsOskPanel *self) info = g_list_model_get_item (G_LIST_MODEL (self->completer_infos), i); if (g_str_equal (ms_completer_info_get_id (info), enabled_completer)) { - g_warning ("Current completer is %s", enabled_completer); + g_debug ("Current completer is %s", enabled_completer); adw_combo_row_set_selected (self->completer_combo, i); found = TRUE; break; -- GitLab From 3e1f34ddd866f0c37607a1a841b9826e48494517 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 10:28:59 +0200 Subject: [PATCH 02/11] osk-layout-prefs: Don't print error when operation got cancelled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Otherwise `--list` might print a pointless warning. Signed-off-by: Guido Günther Part-of: --- src/ms-osk-layout-prefs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ms-osk-layout-prefs.c b/src/ms-osk-layout-prefs.c index da85ad01..98fd4073 100644 --- a/src/ms-osk-layout-prefs.c +++ b/src/ms-osk-layout-prefs.c @@ -353,7 +353,8 @@ on_load_osk_layouts_from_stream_ready (JsonParser *parser, GAsyncResult *res, gp success = json_parser_load_from_stream_finish (parser, res, &err); if (!success) { - g_warning ("Failed to load layouts: %s", err->message); + if (!g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + g_warning ("Failed to load layouts: %s", err->message); return; } -- GitLab From dbf4239eebb9a67b2a3cc034541aea265aeaab28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 10:48:18 +0200 Subject: [PATCH 03/11] data: Add more suppressions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There's more fontconfig things and we also leak the loaded modules. Signed-off-by: Guido Günther Part-of: --- data/leak-suppress.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/data/leak-suppress.txt b/data/leak-suppress.txt index fa7c6955..71560a77 100644 --- a/data/leak-suppress.txt +++ b/data/leak-suppress.txt @@ -1,5 +1,13 @@ +# Loaded modules +leak:g_io_modules_scan_all_in_directory_with_scope +# Adwaita style manager singleton leak:adw_style_manager_ensure +# GTK (only triggeres with `GTK_A11Y=none`, needs investigation in GTK) +leak:gtk_widget_list_mnemonic_labels +# Fontconfig leak:FcConfigValues leak:FcParsePattern +leak:FcPatternObjectInsertElt +leak:FcPatternObjectInsertElt2 leak:FcValueListCreate leak:FcValueSave -- GitLab From 5dc02f371079af128504c21e3cdfc620e9094083 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 10:36:20 +0200 Subject: [PATCH 04/11] feedback-panel: Don't leak audio devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Guido Günther Part-of: --- src/ms-feedback-panel.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ms-feedback-panel.c b/src/ms-feedback-panel.c index 79c573cc..c07d086c 100644 --- a/src/ms-feedback-panel.c +++ b/src/ms-feedback-panel.c @@ -741,13 +741,14 @@ ms_feedback_panel_dispose (GObject *object) MsFeedbackPanel *self = MS_FEEDBACK_PANEL (object); g_clear_object (&self->sound_cancel); - g_clear_object (&self->sound_context); + g_clear_object (&self->settings); g_clear_object (&self->notifications_settings); g_strfreev (self->notifications_wakeup_categories); g_clear_pointer (&self->known_applications, g_hash_table_unref); + g_clear_object (&self->audio_devices); g_clear_object (&self->mixer_control); G_OBJECT_CLASS (ms_feedback_panel_parent_class)->dispose (object); -- GitLab From 8b3496a2c80fb0ff73ed6f45df3cb808de9f5e3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 10:29:35 +0200 Subject: [PATCH 05/11] application: Don't leak window MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Guido Günther Part-of: --- src/mobile-settings-application.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mobile-settings-application.c b/src/mobile-settings-application.c index efadd4d5..7c102129 100644 --- a/src/mobile-settings-application.c +++ b/src/mobile-settings-application.c @@ -223,7 +223,7 @@ list_available_panels (GApplication *app) g_autoptr (GtkStackPage) page = NULL; const char *name; - // Since we're in the local instance, just get us a window + /* Since we're in the local instance, just get us a window */ adw_init (); window = g_object_new (MOBILE_SETTINGS_TYPE_WINDOW, NULL); @@ -237,6 +237,8 @@ list_available_panels (GApplication *app) g_print ("- %s\n", name); } + + gtk_window_destroy (GTK_WINDOW (window)); } -- GitLab From 4af6839b8b4a5b97f16c2bc805d98e4347584260 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 11:07:16 +0200 Subject: [PATCH 06/11] osk-panel: Don't leak content provider MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Guido Günther Part-of: --- src/ms-osk-panel.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ms-osk-panel.c b/src/ms-osk-panel.c index 3b0bae28..ec40de3d 100644 --- a/src/ms-osk-panel.c +++ b/src/ms-osk-panel.c @@ -173,10 +173,11 @@ create_shortcuts_row (gpointer item, gpointer user_data) GtkStringObject *string = GTK_STRING_OBJECT (item); GtkWidget *label = gtk_shortcut_label_new (gtk_string_object_get_string (string)); GtkDragSource *drag_source = gtk_drag_source_new (); - GdkContentProvider *type = gdk_content_provider_new_typed (GTK_TYPE_STRING_OBJECT, string); + g_autoptr (GdkContentProvider) type = NULL; GtkDropTarget *target = gtk_drop_target_new (G_TYPE_INVALID, GDK_ACTION_COPY); GType targets[] = { GTK_TYPE_STRING_OBJECT }; + type = gdk_content_provider_new_typed (GTK_TYPE_STRING_OBJECT, string); /* drag */ gtk_drag_source_set_content (drag_source, type); g_signal_connect (drag_source, "drag-begin", G_CALLBACK (on_drag_begin), label); -- GitLab From dec8d4d942afa3c68a6c620c5feacc06c8ef2675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 13:03:53 +0200 Subject: [PATCH 07/11] plugin-list-box: Don't leak rows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We're using widgets in the list model which are floating so make sure we deal with non-floating refs everywhere. Signed-off-by: Guido Günther Part-of: --- src/ms-plugin-list-box.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/ms-plugin-list-box.c b/src/ms-plugin-list-box.c index 56e9ca2a..b5a5d9e7 100644 --- a/src/ms-plugin-list-box.c +++ b/src/ms-plugin-list-box.c @@ -129,7 +129,7 @@ save_plugin_store (MsPluginListBox *self) guint n_plugins = g_list_model_get_n_items (G_LIST_MODEL (self->store)); for (guint i = 0; i < n_plugins; i++) { - MsPluginRow *plugin_row = g_list_model_get_item (G_LIST_MODEL (self->store), i); + g_autoptr (MsPluginRow) plugin_row = g_list_model_get_item (G_LIST_MODEL (self->store), i); gboolean enabled = ms_plugin_row_get_enabled (plugin_row); const char *name = ms_plugin_row_get_name (plugin_row); @@ -222,7 +222,7 @@ sort_plugins_store (MsPluginListBox *self) for (guint i = 0; i < g_strv_length (plugins_order); i++) { for (guint j = 0; j < g_list_model_get_n_items (G_LIST_MODEL (self->store)); j++) { - MsPluginRow *plugin_row = g_list_model_get_item (G_LIST_MODEL (self->store), j); + g_autoptr (MsPluginRow) plugin_row = g_list_model_get_item (G_LIST_MODEL (self->store), j); if (g_strcmp0 (plugins_order[i], ms_plugin_row_get_name (plugin_row)) == 0) { g_list_store_remove (self->store, j); @@ -384,7 +384,7 @@ ms_plugin_list_box_get_property (GObject *object, static void -ms_plugin_list_box_finalize (GObject *object) +ms_plugin_list_box_dispose (GObject *object) { MsPluginListBox *self = MS_PLUGIN_LIST_BOX (object); @@ -392,6 +392,15 @@ ms_plugin_list_box_finalize (GObject *object) g_clear_object (&self->store); g_clear_object (&self->action_group); + G_OBJECT_CLASS (ms_plugin_list_box_parent_class)->dispose (object); +} + + +static void +ms_plugin_list_box_finalize (GObject *object) +{ + MsPluginListBox *self = MS_PLUGIN_LIST_BOX (object); + g_clear_pointer (&self->prefs_extension_point, g_free); g_clear_pointer (&self->settings_key, g_free); g_clear_pointer (&self->plugin_type, g_free); @@ -407,6 +416,7 @@ ms_plugin_list_box_class_init (MsPluginListBoxClass *klass) object_class->get_property = ms_plugin_list_box_get_property; object_class->set_property = ms_plugin_list_box_set_property; + object_class->dispose = ms_plugin_list_box_dispose; object_class->finalize = ms_plugin_list_box_finalize; /** @@ -444,6 +454,9 @@ ms_plugin_list_box_class_init (MsPluginListBoxClass *klass) static GtkWidget * create_row (gpointer object, gpointer user_data) { + /* Make sure all refs are non floating as mixing floating refs from + * creating rows and non-floating from sorting rows would leak */ + g_object_ref_sink (object); return GTK_WIDGET (object); } -- GitLab From 44b552a6ab2e9b520bfefbe2e9237bf8cbb1114b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 13:11:02 +0200 Subject: [PATCH 08/11] osk-panel: Don't leak enabled completer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Guido Günther Part-of: --- src/ms-osk-panel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ms-osk-panel.c b/src/ms-osk-panel.c index ec40de3d..1c91de74 100644 --- a/src/ms-osk-panel.c +++ b/src/ms-osk-panel.c @@ -519,7 +519,7 @@ on_completer_selected_item_changed (MsOskPanel *self) static void ms_osk_panel_init_pos_completer (MsOskPanel *self) { - char *enabled_completer = NULL; + g_autofree char *enabled_completer = NULL; gboolean found = FALSE; ms_osk_panel_parse_pos_completers (self); -- GitLab From 9307aa452c1ac5690eb37b002e6530daf0d0b901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 13:13:08 +0200 Subject: [PATCH 09/11] osk-panel: Don't leak flags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We need to free the container but not the strings Signed-off-by: Guido Günther Part-of: --- src/ms-osk-panel.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ms-osk-panel.c b/src/ms-osk-panel.c index 1c91de74..18452046 100644 --- a/src/ms-osk-panel.c +++ b/src/ms-osk-panel.c @@ -579,9 +579,10 @@ ms_osk_panel_init_pos_completer (MsOskPanel *self) static gboolean completer_combo_sensitive_mapping (GValue *value, GVariant *variant, gpointer user_data) { - const char *const *flags = g_variant_get_strv (variant, NULL); + const char **flags = g_variant_get_strv (variant, NULL); g_value_set_boolean (value, !gm_strv_is_null_or_empty (flags)); + g_free (flags); return TRUE; } -- GitLab From f0f5eb366629554bb53b69d22127893112f52edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 13:23:48 +0200 Subject: [PATCH 10/11] overview-panel: Don't leak app-info MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We already have a ref, no need for another one Signed-off-by: Guido Günther Part-of: --- src/ms-overview-panel.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/ms-overview-panel.c b/src/ms-overview-panel.c index 4841398a..ec70ad9a 100644 --- a/src/ms-overview-panel.c +++ b/src/ms-overview-panel.c @@ -282,7 +282,6 @@ create_fav_app (gpointer item, gpointer user_data) add_drop_target (app, self); g_object_set_data_full (G_OBJECT (app), "app-info", app_info, g_object_unref); - g_object_ref (app_info); return app; } -- GitLab From 0b3225ad941e2d46e3f9ad3c59c7f53aaf4f04e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Fri, 13 Jun 2025 14:06:43 +0200 Subject: [PATCH 11/11] plugin-row: Don't leak subtitle MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Guido Günther Part-of: --- src/ms-plugin-row.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ms-plugin-row.c b/src/ms-plugin-row.c index e535332c..61dd2894 100644 --- a/src/ms-plugin-row.c +++ b/src/ms-plugin-row.c @@ -224,6 +224,7 @@ ms_plugin_row_finalize (GObject *object) MsPluginRow *self = MS_PLUGIN_ROW (object); g_clear_pointer (&self->name, g_free); + g_clear_pointer (&self->subtitle, g_free); g_clear_pointer (&self->filename, g_free); g_clear_object (&self->action_group); -- GitLab