From db326889f91f96a7155bdfa4af353a5b915ebfa0 Mon Sep 17 00:00:00 2001 From: Paolo Borelli Date: Sun, 24 Apr 2016 11:46:38 +0200 Subject: 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 4c420a952a..4eab3a7f1e 100644 --- a/gtk/inspector/general.c +++ b/gtk/inspector/general.c @@ -490,12 +490,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; @@ -507,18 +504,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); @@ -532,9 +519,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); -- cgit v1.2.1