static void xmms_output_start (xmms_output_t *output, xmms_error_t *err) { g_return_if_fail (output); xmms_output_filler_state (output, FILLER_RUN); if (!xmms_output_status_set (output, XMMS_PLAYBACK_STATUS_PLAY)) { xmms_output_filler_state (output, FILLER_STOP); xmms_error_set (err, XMMS_ERROR_GENERIC, "Could not start playback"); } }
static void xmms_output_destroy (xmms_object_t *object) { xmms_output_t *output = (xmms_output_t *)object; output->monitor_volume_running = FALSE; if (output->monitor_volume_thread) { g_thread_join (output->monitor_volume_thread); output->monitor_volume_thread = NULL; } xmms_output_filler_state (output, FILLER_QUIT); g_thread_join (output->filler_thread); if (output->plugin) { xmms_output_plugin_method_destroy (output->plugin, output); xmms_object_unref (output->plugin); } xmms_object_unref (output->playlist); g_mutex_free (output->status_mutex); g_mutex_free (output->playtime_mutex); g_mutex_free (output->filler_mutex); g_cond_free (output->filler_state_cond); xmms_ringbuf_destroy (output->filler_buffer); xmms_ipc_broadcast_unregister ( XMMS_IPC_SIGNAL_OUTPUT_VOLUME_CHANGED); xmms_ipc_broadcast_unregister ( XMMS_IPC_SIGNAL_PLAYBACK_STATUS); xmms_ipc_broadcast_unregister ( XMMS_IPC_SIGNAL_OUTPUT_CURRENTID); xmms_ipc_signal_unregister (XMMS_IPC_SIGNAL_OUTPUT_PLAYTIME); xmms_ipc_object_unregister (XMMS_IPC_OBJECT_OUTPUT); }
static void xmms_output_destroy (xmms_object_t *object) { xmms_output_t *output = (xmms_output_t *)object; XMMS_DBG ("Deactivating output object."); output->monitor_volume_running = FALSE; if (output->monitor_volume_thread) { g_thread_join (output->monitor_volume_thread); output->monitor_volume_thread = NULL; } xmms_output_filler_state (output, FILLER_QUIT); g_thread_join (output->filler_thread); if (output->plugin) { xmms_output_plugin_method_destroy (output->plugin, output); xmms_object_unref (output->plugin); } xmms_output_format_list_clear (output); xmms_object_unref (output->playlist); xmms_object_unref (output->medialib); g_mutex_clear (&output->status_mutex); g_mutex_clear (&output->playtime_mutex); g_mutex_clear (&output->filler_mutex); g_cond_clear (&output->filler_state_cond); xmms_ringbuf_destroy (output->filler_buffer); xmms_playback_unregister_ipc_commands (); }
static void xmms_output_stop (xmms_output_t *output, xmms_error_t *err) { g_return_if_fail (output); xmms_output_status_set (output, XMMS_PLAYBACK_STATUS_STOP); xmms_output_filler_state (output, FILLER_STOP); }
/** Methods */ static void xmms_output_xform_kill (xmms_output_t *output, xmms_error_t *error) { xmms_output_filler_state (output, FILLER_KILL); }
/** Methods */ static void xmms_playback_client_tickle (xmms_output_t *output, xmms_error_t *error) { xmms_output_filler_state (output, FILLER_KILL); }