output/pulse: implement method delay()
Reduce command latency while paused.
This commit is contained in:
parent
51d793bec1
commit
335d5d5d72
@ -762,6 +762,24 @@ pulse_output_stream_pause(struct pulse_output *po, bool pause,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned
|
||||||
|
pulse_output_delay(struct audio_output *ao)
|
||||||
|
{
|
||||||
|
struct pulse_output *po = (struct pulse_output *)ao;
|
||||||
|
unsigned result = 0;
|
||||||
|
|
||||||
|
pa_threaded_mainloop_lock(po->mainloop);
|
||||||
|
|
||||||
|
if (po->base.pause && pulse_output_stream_is_paused(po) &&
|
||||||
|
pa_stream_get_state(po->stream) == PA_STREAM_READY)
|
||||||
|
/* idle while paused */
|
||||||
|
result = 1000;
|
||||||
|
|
||||||
|
pa_threaded_mainloop_unlock(po->mainloop);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
static size_t
|
static size_t
|
||||||
pulse_output_play(struct audio_output *ao, const void *chunk, size_t size,
|
pulse_output_play(struct audio_output *ao, const void *chunk, size_t size,
|
||||||
GError **error_r)
|
GError **error_r)
|
||||||
@ -889,13 +907,8 @@ pulse_output_pause(struct audio_output *ao)
|
|||||||
|
|
||||||
/* cork the stream */
|
/* cork the stream */
|
||||||
|
|
||||||
if (pulse_output_stream_is_paused(po)) {
|
if (!pulse_output_stream_is_paused(po) &&
|
||||||
/* already paused; due to a MPD API limitation, we
|
!pulse_output_stream_pause(po, true, &error)) {
|
||||||
have to sleep a little bit here, to avoid hogging
|
|
||||||
the CPU */
|
|
||||||
|
|
||||||
g_usleep(50000);
|
|
||||||
} else if (!pulse_output_stream_pause(po, true, &error)) {
|
|
||||||
pa_threaded_mainloop_unlock(po->mainloop);
|
pa_threaded_mainloop_unlock(po->mainloop);
|
||||||
g_warning("%s", error->message);
|
g_warning("%s", error->message);
|
||||||
g_error_free(error);
|
g_error_free(error);
|
||||||
@ -932,6 +945,7 @@ const struct audio_output_plugin pulse_output_plugin = {
|
|||||||
.enable = pulse_output_enable,
|
.enable = pulse_output_enable,
|
||||||
.disable = pulse_output_disable,
|
.disable = pulse_output_disable,
|
||||||
.open = pulse_output_open,
|
.open = pulse_output_open,
|
||||||
|
.delay = pulse_output_delay,
|
||||||
.play = pulse_output_play,
|
.play = pulse_output_play,
|
||||||
.cancel = pulse_output_cancel,
|
.cancel = pulse_output_cancel,
|
||||||
.pause = pulse_output_pause,
|
.pause = pulse_output_pause,
|
||||||
|
Loading…
Reference in New Issue
Block a user