# HG changeset patch # User William Pitcock # Date 1191828402 18000 # Node ID 6020023069693d560b31e32940f96cf246040456 # Parent a89a12aa4f2c262cbbd0d23f3fb9366e6619f5c5 generic playback control API diff -r a89a12aa4f2c -r 602002306969 src/audacious/playback.c --- a/src/audacious/playback.c Mon Oct 08 01:43:58 2007 -0500 +++ b/src/audacious/playback.c Mon Oct 08 02:26:42 2007 -0500 @@ -355,6 +355,34 @@ return NULL; } +InputPlayback * +playback_new(void) +{ + playback = g_slice_new0(InputPlayback); + + playback->pb_ready_mutex = g_mutex_new(); + playback->pb_ready_cond = g_cond_new(); + playback->pb_ready_val = 0; + + playback->pb_change_mutex = g_mutex_new(); + playback->pb_change_cond = g_cond_new(); + + /* init vtable functors */ + playback->set_pb_ready = playback_set_pb_ready; + playback->set_pb_change = playback_set_pb_change; + playback->set_params = playback_set_pb_params; + playback->set_title = playback_set_pb_title; + playback->pass_audio = output_pass_audio; + + return playback; +} + +void +playback_run(InputPlayback *playback) +{ + playback->thread = g_thread_create(playback_monitor_thread, playback, TRUE, NULL); +} + gboolean playback_play_file(PlaylistEntry *entry) { @@ -393,30 +421,18 @@ ip_data.playing = TRUE; - playback = g_slice_new0(InputPlayback); + playback = playback_new(); entry->decoder->output = &psuedo_output_plugin; playback->plugin = entry->decoder; + playback->filename = g_strdup(entry->filename); playback->output = &psuedo_output_plugin; - playback->filename = g_strdup(entry->filename); - playback->pb_ready_mutex = g_mutex_new(); - playback->pb_ready_cond = g_cond_new(); - playback->pb_ready_val = 0; - - playback->pb_change_mutex = g_mutex_new(); - playback->pb_change_cond = g_cond_new(); - - /* init vtable functors */ - playback->set_pb_ready = playback_set_pb_ready; - playback->set_pb_change = playback_set_pb_change; - playback->set_params = playback_set_pb_params; - playback->set_title = playback_set_pb_title; - playback->pass_audio = output_pass_audio; set_current_input_playback(playback); - playback->thread = g_thread_create(playback_monitor_thread, playback, TRUE, NULL); + playback_run(playback); + #ifdef USE_DBUS mpris_emit_status_change(mpris, MPRIS_STATUS_PLAY); #endif diff -r a89a12aa4f2c -r 602002306969 src/audacious/playback.h --- a/src/audacious/playback.h Mon Oct 08 01:43:58 2007 -0500 +++ b/src/audacious/playback.h Mon Oct 08 02:26:42 2007 -0500 @@ -26,6 +26,7 @@ #include #include "playlist.h" +#include "plugin.h" gint playback_get_time(void); void playback_initiate(void); @@ -38,5 +39,7 @@ void playback_seek_relative(gint offset); void playback_eof(void); void playback_error(void); +InputPlayback *playback_new(void); +void playback_run(InputPlayback *); #endif