From 6225d435e6cace5ad6615e8b2b3ec20e5b9b6c45 Mon Sep 17 00:00:00 2001 From: Paolo Borelli Date: Sun, 24 Apr 2016 11:46:38 +0200 Subject: [PATCH] inspector: do not leak seat capabilities descriprion Factor out an utility function for readability and free the string with the list of capabilities --- gtk/inspector/general.c | 45 ++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/gtk/inspector/general.c b/gtk/inspector/general.c index b00a01e3d3..7699c1035d 100644 --- a/gtk/inspector/general.c +++ b/gtk/inspector/general.c @@ -452,12 +452,9 @@ add_device (GtkInspectorGeneral *gen, } } -static void -add_seat (GtkInspectorGeneral *gen, - GdkSeat *seat, - int num) +static char * +get_seat_capabilities (GdkSeat *seat) { - GdkSeatCapabilities capabilities; struct { GdkSeatCapabilities cap; const char *name; @@ -469,18 +466,8 @@ add_seat (GtkInspectorGeneral *gen, { 0, NULL } }; GString *str; - char *text; + GdkSeatCapabilities capabilities; int i; - GList *list, *l; - - if (!g_object_get_data (G_OBJECT (seat), "inspector-connected")) - { - g_object_set_data (G_OBJECT (seat), "inspector-connected", GINT_TO_POINTER (1)); - g_signal_connect_swapped (seat, "device-added", G_CALLBACK (populate_seats), gen); - g_signal_connect_swapped (seat, "device-removed", G_CALLBACK (populate_seats), gen); - } - - text = g_strdup_printf ("Seat %d", num); str = g_string_new (""); capabilities = gdk_seat_get_capabilities (seat); @@ -494,9 +481,31 @@ add_seat (GtkInspectorGeneral *gen, } } - add_label_row (GTK_LIST_BOX (gen->priv->device_box), text, str->str, 0); + return g_string_free (str, FALSE); +} + +static void +add_seat (GtkInspectorGeneral *gen, + GdkSeat *seat, + int num) +{ + char *text; + char *caps; + GList *list, *l; + + if (!g_object_get_data (G_OBJECT (seat), "inspector-connected")) + { + g_object_set_data (G_OBJECT (seat), "inspector-connected", GINT_TO_POINTER (1)); + g_signal_connect_swapped (seat, "device-added", G_CALLBACK (populate_seats), gen); + g_signal_connect_swapped (seat, "device-removed", G_CALLBACK (populate_seats), gen); + } + + text = g_strdup_printf ("Seat %d", num); + caps = get_seat_capabilities (seat); + + add_label_row (GTK_LIST_BOX (gen->priv->device_box), text, caps, 0); g_free (text); - g_string_free (str, FALSE); + g_free (caps); list = gdk_seat_get_slaves (seat, GDK_SEAT_CAPABILITY_ALL);