Bug#678921: Info received (Bug#678921: Info received (STILL broken in 3.5-2+b2 in Jessie))

Athanasius debian at miggy.org
Thu Feb 25 00:21:31 UTC 2016


  Actually, use this patch instead.  It will also fire the first time it
sees a new title, even if the previous saved one was empty.  The
previous patch would need *two* changes of title before it would fire
the script, one to fill in the previous, and then another to be
different to that.

  I'd definitely push this upstream if possible.  I really don't know
why this has remained unfixed for so long, I guess no audacious dev
cared about this bit of code.

diff -ur audacious-plugins-3.5/src/song_change/song_change.c new-audacious-plugins-3.5/src/song_change/song_change.c
--- audacious-plugins-3.5/src/song_change/song_change.c	2014-04-23 03:37:46.000000000 +0100
+++ new-audacious-plugins-3.5/src/song_change/song_change.c	2016-02-25 00:18:01.691451152 +0000
@@ -32,7 +32,7 @@
 static void songchange_playback_begin(gpointer unused, gpointer unused2);
 static void songchange_playback_end(gpointer unused, gpointer unused2);
 static void songchange_playlist_eof(gpointer unused, gpointer unused2);
-//static void songchange_playback_ttc(gpointer, gpointer);
+static void songchange_playback_ttc(gpointer, gpointer);
 
 typedef struct
 {
@@ -252,7 +252,7 @@
     hook_dissociate("playback begin", songchange_playback_begin);
     hook_dissociate("playback end", songchange_playback_end);
     hook_dissociate("playlist end reached", songchange_playlist_eof);
-    // hook_dissociate( "playlist set info" , songchange_playback_ttc);
+    hook_dissociate("title change" , songchange_playback_ttc);
 
     if ( ttc_prevs != NULL )
     {
@@ -320,7 +320,7 @@
     ttc_prevs = g_malloc0(sizeof(songchange_playback_ttc_prevs_t));
     ttc_prevs->title = NULL;
     ttc_prevs->filename = NULL;
-    // hook_associate( "playlist set info" , songchange_playback_ttc , ttc_prevs );
+    hook_associate("title change" , songchange_playback_ttc , ttc_prevs );
 
     return TRUE;
 }
@@ -335,53 +335,58 @@
     do_command (cmd_line_after);
 }
 
-#if 0
     static void
 songchange_playback_ttc(gpointer plentry_gp, gpointer prevs_gp)
 {
-    if ( ( aud_ip_state->playing ) && ( strcmp(cmd_line_ttc,"") ) )
+    if ( aud_drct_get_playing() && ( strcmp(cmd_line_ttc,"") ) )
     {
         songchange_playback_ttc_prevs_t *prevs = prevs_gp;
-        PlaylistEntry *pl_entry = plentry_gp;
+	int playlist = aud_playlist_get_playing ();
+	int pl_entry = aud_playlist_get_position(playlist);
+	gchar *pl_entry_filename = aud_playlist_entry_get_filename(playlist, pl_entry);
+	gchar *pl_entry_title = aud_playlist_entry_get_title(playlist, pl_entry, FALSE);
 
         /* same filename but title changed, useful to detect http stream song changes */
 
         if ( ( prevs->title != NULL ) && ( prevs->filename != NULL ) )
         {
-            if ( ( pl_entry->filename != NULL ) && ( !strcmp(pl_entry->filename,prevs->filename) ) )
+            if ( ( pl_entry_filename != NULL ) && ( !strcmp(pl_entry_filename,prevs->filename) ) )
             {
-                if ( ( pl_entry->title != NULL ) && ( strcmp(pl_entry->title,prevs->title) ) )
+                if ( ( pl_entry_title != NULL ) && ( strcmp(pl_entry_title,prevs->title) ) )
                 {
-                    int pos = aud_drct_pl_get_pos();
-                    char *current_file = aud_drct_pl_get_file(pos);
-                    do_command(cmd_line_ttc, current_file, pos);
-                    g_free(current_file);
+                    do_command(cmd_line_ttc);
                     g_free(prevs->title);
-                    prevs->title = g_strdup(pl_entry->title);
+                    prevs->title = g_strdup(pl_entry_title);
                 }
             }
             else
             {
                 g_free(prevs->filename);
-                prevs->filename = g_strdup(pl_entry->filename);
+                prevs->filename = g_strdup(pl_entry_filename);
                 /* if filename changes, reset title as well */
                 if ( prevs->title != NULL )
                     g_free(prevs->title);
-                prevs->title = g_strdup(pl_entry->title);
+                prevs->title = g_strdup(pl_entry_title);
             }
         }
         else
         {
-            if ( prevs->title != NULL )
-                g_free(prevs->title);
-            prevs->title = g_strdup(pl_entry->title);
-            if ( prevs->filename != NULL )
-                g_free(prevs->filename);
-            prevs->filename = g_strdup(pl_entry->filename);
+            if ( pl_entry_filename != NULL &&  pl_entry_title != NULL )
+            {
+            	do_command(cmd_line_ttc);
+            	if ( prevs->title != NULL )
+                    g_free(prevs->title);
+            	prevs->title = g_strdup(pl_entry_title);
+            	if ( prevs->filename != NULL )
+                    g_free(prevs->filename);
+            	prevs->filename = g_strdup(pl_entry_filename);
+	    }
         }
+
+	str_unref (pl_entry_filename);
+	str_unref (pl_entry_title);
     }
 }
-#endif
 
 static void songchange_playlist_eof(gpointer unused, gpointer unused2)
 {



More information about the pkg-multimedia-maintainers mailing list