Mercurial > audlegacy
diff src/audacious/playback.c @ 2436:f346d30bf5ab trunk
[svn] Change the input plugin API to use a struct for the currently-playing file.
| author | iabervon |
|---|---|
| date | Sun, 28 Jan 2007 17:02:15 -0800 |
| parents | b23f52fe132f |
| children | 8750a62abed8 |
line wrap: on
line diff
--- a/src/audacious/playback.c Sun Jan 28 12:15:08 2007 -0800 +++ b/src/audacious/playback.c Sun Jan 28 17:02:15 2007 -0800 @@ -71,9 +71,9 @@ playback_get_time(void) { g_return_val_if_fail(playback_get_playing(), -1); - g_return_val_if_fail(get_current_input_plugin(), -1); + g_return_val_if_fail(get_current_input_playback(), -1); - return get_current_input_plugin()->get_time(); + return get_current_input_playback()->plugin->get_time(get_current_input_playback()); } void @@ -142,13 +142,14 @@ if (!playback_get_playing()) return; - if (!get_current_input_plugin()) + if (!get_current_input_playback()) return; ip_data.paused = !ip_data.paused; - if (get_current_input_plugin()->pause) - get_current_input_plugin()->pause(ip_data.paused); + if (get_current_input_playback()->plugin->pause) + get_current_input_playback()->plugin->pause(get_current_input_playback(), + ip_data.paused); g_return_if_fail(mainwin_playstatus != NULL); @@ -161,7 +162,7 @@ void playback_stop(void) { - if (ip_data.playing && get_current_input_plugin()) { + if (ip_data.playing && get_current_input_playback()) { if (playback_get_paused()) { output_flush(get_written_time()); /* to avoid noise */ @@ -170,8 +171,8 @@ ip_data.playing = FALSE; - if (get_current_input_plugin()->stop) - get_current_input_plugin()->stop(); + if (get_current_input_playback()->plugin->stop) + get_current_input_playback()->plugin->stop(get_current_input_playback()); free_vis_data(); ip_data.paused = FALSE; @@ -181,6 +182,9 @@ input_info_text = NULL; mainwin_set_info_text(); } + + g_free(get_current_input_playback()); + set_current_input_playback(NULL); } ip_data.buffering = FALSE; @@ -210,6 +214,7 @@ gboolean playback_play_file(PlaylistEntry *entry) { + InputPlayback * playback; g_return_val_if_fail(entry != NULL, FALSE); if (!get_current_output_plugin()) { @@ -232,15 +237,23 @@ { input_file_not_playable(entry->filename); - set_current_input_plugin(NULL); + set_current_input_playback(NULL); mainwin_set_info_text(); return FALSE; } - set_current_input_plugin(entry->decoder); + playback = g_new0(InputPlayback, 1); + entry->decoder->output = &psuedo_output_plugin; - entry->decoder->play_file(entry->filename); + + playback->plugin = entry->decoder; + playback->output = &psuedo_output_plugin; + playback->filename = entry->filename; + + set_current_input_playback(playback); + + entry->decoder->play_file(playback); ip_data.playing = TRUE; @@ -266,7 +279,7 @@ gint l=0, r=0; g_return_if_fail(ip_data.playing); - g_return_if_fail(get_current_input_plugin()); + g_return_if_fail(get_current_input_playback()); /* FIXME WORKAROUND...that should work with all plugins * mute the volume, start playback again, do the seek, then pause again @@ -281,7 +294,7 @@ } free_vis_data(); - get_current_input_plugin()->seek(time); + get_current_input_playback()->plugin->seek(get_current_input_playback(), time); if (restore_pause) {
