From 5aa6c468a02bd7f61a87acedba43f61e183b1e04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 30 May 2015 11:35:25 +0200 Subject: [PATCH] playback/player: player: Change visualization API a bit to be more user friendly and fix some leaks and other bugs --- playback/player/gtk/gtk-play.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/playback/player/gtk/gtk-play.c b/playback/player/gtk/gtk-play.c index ddfd3c175b..fff5aec1ea 100644 --- a/playback/player/gtk/gtk-play.c +++ b/playback/player/gtk/gtk-play.c @@ -790,27 +790,30 @@ create_visualization_menu (GtkPlay * play) GtkWidget *menu; GtkWidget *item; GtkWidget *sep; - const GList *list; GSList *group = NULL; const gchar *cur_vis; - gchar **vis_names; + GstPlayerVisualization **viss, **p; menu = gtk_menu_new (); cur_vis = gst_player_get_current_visualization (play->player); - vis_names = gst_player_get_visualization_elements_name (); + viss = gst_player_visualizations_get (); - for (i = 0; vis_names[i] != NULL; i++) { - gchar *label = (gchar *) vis_names[i]; + p = viss; + while (*p) { + gchar *label = g_strdup ((*p)->name); item = gtk_radio_menu_item_new_with_label (group, label); group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (item)); if (g_strcmp0 (label, cur_vis) == 0) gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), True); - g_object_set_data (G_OBJECT (item), "name", label); + g_object_set_data_full (G_OBJECT (item), "name", label, + (GDestroyNotify) g_free); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); g_signal_connect (G_OBJECT (item), "toggled", G_CALLBACK (visualization_changed_cb), play); + p++; } + gst_player_visualizations_free (viss); sep = gtk_separator_menu_item_new (); item = gtk_radio_menu_item_new_with_label (group, "Disable"); @@ -823,9 +826,6 @@ create_visualization_menu (GtkPlay * play) gtk_menu_shell_append (GTK_MENU_SHELL (menu), sep); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); - if (vis_names) - g_free (vis_names); - return menu; } @@ -1495,14 +1495,15 @@ main (gint argc, gchar ** argv) /* if visualization is enabled then use the first element */ if (vis) { - gchar **vis_names; - vis_names = gst_player_get_visualization_elements_name (); + GstPlayerVisualization **viss; + viss = gst_player_visualizations_get (); - if (vis_names) { - gst_player_set_visualization (play.player, vis_names[0]); + if (viss && *viss) { + gst_player_set_visualization (play.player, (*viss)->name); gst_player_set_visualization_enabled (play.player, TRUE); - g_free (vis_names); } + if (viss) + gst_player_visualizations_free (viss); } play_current_uri (&play, g_list_first (play.uris), NULL);