[Xfce4-commits] <parole:master> Save stream tags when stream playback finished, should be safer.

Ali Abdallah noreply at xfce.org
Sat Nov 21 14:34:02 CET 2009


Updating branch refs/heads/master
         to 6b8227e356147a92c141cf9e5269fe79b5d68443 (commit)
       from 11b9a581afb233fb71a64c2fbebaa672d65e6353 (commit)

commit 6b8227e356147a92c141cf9e5269fe79b5d68443
Author: Ali Abdallah <ali at ali-xfce.org>
Date:   Fri Nov 20 15:50:21 2009 +0100

    Save stream tags when stream playback finished, should be safer.

 plugins/properties/stream-properties.c |   21 ++++++++++++++++++++-
 1 files changed, 20 insertions(+), 1 deletions(-)

diff --git a/plugins/properties/stream-properties.c b/plugins/properties/stream-properties.c
index f49f331..27f30e7 100644
--- a/plugins/properties/stream-properties.c
+++ b/plugins/properties/stream-properties.c
@@ -47,6 +47,7 @@ typedef struct
     TagLib_File *tag_file;
     gchar       *filename;
     guint        changed;
+    gboolean	 need_save;
 #endif
     gboolean     block_edit_signal;
     
@@ -126,6 +127,7 @@ init_media_tag_entries (PluginData *data)
 #ifdef HAVE_TAGLIBC
     gtk_widget_set_tooltip_text (data->save, NULL);
     data->changed = 0;
+    data->need_save = FALSE;
     if ( data->filename )
     {
 	g_free (data->filename);
@@ -151,6 +153,9 @@ save_media_tags (PluginData *data)
     if ( !data->tag_file )
 	return;
 	    
+    if ( !data->need_save )
+	return;
+    
     tag = taglib_file_tag (data->tag_file);
     
     if ( !tag )
@@ -192,11 +197,21 @@ save_media_tags (PluginData *data)
 	taglib_file_save (data->tag_file);
     
     data->changed = 0;
+    data->need_save = FALSE;
     
     taglib_tag_free_strings ();
 }
 #endif
 
+
+#ifdef HAVE_TAGLIBC
+static void 
+save_media_clicked_cb (PluginData *data)
+{
+    data->need_save = TRUE;
+}
+#endif
+
 static GtkWidget *create_properties_widget (PluginData *data)
 {
     PangoFontDescription *pfd;
@@ -319,7 +334,7 @@ static GtkWidget *create_properties_widget (PluginData *data)
                       2, 8);
 
     g_signal_connect_swapped (data->save, "clicked",
-			      G_CALLBACK (save_media_tags), data);
+			      G_CALLBACK (save_media_clicked_cb), data);
     
     g_signal_connect_swapped (data->title, "changed",
 			      G_CALLBACK (title_entry_edited), data);
@@ -342,6 +357,10 @@ static GtkWidget *create_properties_widget (PluginData *data)
 static void
 state_changed_cb (ParolePlugin *plugin, const ParoleStream *stream, ParoleState state, PluginData *data)
 {
+#ifdef HAVE_TAGLIBC
+    save_media_tags (data);
+#endif
+
     if ( state <= PAROLE_STATE_PLAYBACK_FINISHED )
 	init_media_tag_entries (data);
 }



More information about the Xfce4-commits mailing list