Esempio n. 1
0
void audio_output_cancel(struct audio_output *ao)
{
	g_mutex_lock(ao->mutex);
	if (audio_output_is_open(ao))
		ao_command_async(ao, AO_COMMAND_CANCEL);
	g_mutex_unlock(ao->mutex);
}
Esempio n. 2
0
void
audio_output_drain_async(struct audio_output *ao)
{
	g_mutex_lock(ao->mutex);
	if (audio_output_is_open(ao))
		ao_command_async(ao, AO_COMMAND_DRAIN);
	g_mutex_unlock(ao->mutex);
}
Esempio n. 3
0
void audio_output_pause(struct audio_output *ao)
{
	if (ao->mixer != NULL && ao->plugin->pause == NULL)
		/* the device has no pause mode: close the mixer,
		   unless its "global" flag is set (checked by
		   mixer_auto_close()) */
		mixer_auto_close(ao->mixer);

	g_mutex_lock(ao->mutex);
	if (audio_output_is_open(ao))
		ao_command_async(ao, AO_COMMAND_PAUSE);
	g_mutex_unlock(ao->mutex);
}
Esempio n. 4
0
/**
 * Sends a command to the #audio_output object and waits for
 * completion.
 *
 * @param ao the #audio_output instance; must be locked
 */
static void
ao_command(struct audio_output *ao, enum audio_output_command cmd)
{
    ao_command_async(ao, cmd);
    ao_command_wait(ao);
}