diff -Nur audacious-plugin-fc-0.6-orig/src/main.c audacious-plugin-fc-0.6/src/main.c --- audacious-plugin-fc-0.6-orig/src/main.c 2010-07-23 09:51:35.000000000 +0200 +++ audacious-plugin-fc-0.6/src/main.c 2011-02-02 00:17:44.000000000 +0100 @@ -22,8 +22,8 @@ #include <glib.h> #include <fc14audiodecoder.h> -#if __AUDACIOUS_PLUGIN_API__ < 16 -#error "At least Audacious 2.4 beta1 is required." +#if _AUD_PLUGIN_VERSION < 18 +#error "At least Audacious 2.5 alpha1 is required." #endif #include "config.h" @@ -39,13 +39,16 @@ static GMutex *seek_mutex; static GCond *seek_cond; static gint jumpToTime = -1; +static gboolean stop_flag = FALSE; -void ip_init(void) { +gboolean ip_init(void) { jumpToTime = -1; seek_mutex = g_mutex_new(); seek_cond = g_cond_new(); fc_ip_load_config(); + + return TRUE; } void ip_cleanup(void) { @@ -83,8 +86,8 @@ return FALSE; } - playback->playing = FALSE; jumpToTime = (start_time > 0) ? start_time : -1; + stop_flag = FALSE; if ( vfs_fseek(fd,0,SEEK_END)!=0 ) { return FALSE; @@ -171,18 +174,17 @@ if ( haveSampleBuf && haveModule ) { int msecSongLen = fc14dec_duration(decoder); - Tuple *t = tuple_new_from_filename( playback->filename ); + Tuple *t = tuple_new_from_filename( filename ); tuple_associate_int(t, FIELD_LENGTH, NULL, msecSongLen); tuple_associate_string(t, FIELD_QUALITY, NULL, "sequenced"); playback->set_tuple( playback, t ); /* bitrate => 4*1000 will be displayed as "4 CHANNELS" */ - playback->set_params( playback, NULL, 0, 1000*4, myFormat.freq, myFormat.channels ); + playback->set_params( playback, 1000*4, myFormat.freq, myFormat.channels ); - playback->playing = TRUE; playback->set_pb_ready(playback); - while ( playback->playing ) { + while ( !stop_flag ) { if (stop_time >= 0 && playback->output->written_time () >= stop_time) { goto DRAIN; } @@ -196,23 +198,21 @@ g_mutex_unlock(seek_mutex); fc14dec_buffer_fill(decoder,sampleBuf,sampleBufSize); - if ( playback->playing && jumpToTime<0 ) { + if ( !stop_flag && jumpToTime<0 ) { playback->output->write_audio(sampleBuf,sampleBufSize); } if ( fc14dec_song_end(decoder) && jumpToTime<0 ) { - playback->eof = TRUE; - playback->playing = FALSE; + stop_flag = TRUE; DRAIN: - while (playback->output->buffer_playing() && playback->playing) { + while ( !stop_flag && playback->output->buffer_playing() ) { g_usleep(20000); } break; } } } - CLEANUP: g_mutex_lock(seek_mutex); - playback->playing = FALSE; + stop_flag = TRUE; g_cond_signal(seek_cond); /* wake up any waiting request */ g_mutex_unlock(seek_mutex); @@ -224,25 +224,25 @@ void ip_stop(InputPlayback *playback) { g_mutex_lock(seek_mutex); - if (playback->playing) { - playback->playing = FALSE; + if (!stop_flag) { + stop_flag = TRUE; playback->output->abort_write(); g_cond_signal(seek_cond); } g_mutex_unlock(seek_mutex); } -void ip_pause(InputPlayback *playback, gshort p) { +void ip_pause(InputPlayback *playback, gboolean p) { g_mutex_lock(seek_mutex); - if (playback->playing) { + if (!stop_flag) { playback->output->pause(p); } g_mutex_unlock(seek_mutex); } -void ip_mseek(InputPlayback *playback, gulong msec) { +void ip_mseek(InputPlayback *playback, gint msec) { g_mutex_lock(seek_mutex); - if (playback->playing) { + if (!stop_flag) { jumpToTime = msec; playback->output->abort_write(); g_cond_signal(seek_cond); diff -Nur audacious-plugin-fc-0.6-orig/src/plugin.c audacious-plugin-fc-0.6/src/plugin.c --- audacious-plugin-fc-0.6-orig/src/plugin.c 2010-07-23 09:38:18.000000000 +0200 +++ audacious-plugin-fc-0.6/src/plugin.c 2011-02-02 00:14:04.257839525 +0100 @@ -1,8 +1,8 @@ #include <audacious/plugin.h> -gchar *fc_fmts[] = { "fc", "fc13", "fc14", NULL }; +const gchar* const fc_fmts[] = { "fc", "fc13", "fc14", NULL }; -void ip_init(void); +gboolean ip_init(void); void ip_cleanup(void); void fc_ip_about(void); void fc_ip_configure(void); @@ -10,9 +10,9 @@ gboolean ip_play(InputPlayback *playback, const gchar *filename, VFSFile *fd, gint start_time, gint stop_time, gboolean pause); void ip_stop(InputPlayback *playback); -void ip_pause(InputPlayback *playback, gshort p); +void ip_pause(InputPlayback *playback, gboolean p); void ip_seek(InputPlayback *playback, gint secs); -void ip_mseek(InputPlayback *playback, gulong msec); +void ip_mseek(InputPlayback *playback, gint msec); Tuple *ip_probe_for_tuple(const gchar *filename, VFSFile *fd); InputPlugin iplugin =