mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
fold the seperate variable pa_sink_input::playing into pa_sink_input::state as state PA_SINK_INPUT_DRAINED. The following mappings hold:
old PA_SINK_RUNNING + playing set = new PA_SINK_RUNNING old PA_SINK_RUNNING + playing not set = new PA_SINK_DRAINED git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1162 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
12aa842174
commit
f1c46113ae
2 changed files with 18 additions and 15 deletions
|
|
@ -94,7 +94,7 @@ pa_sink_input* pa_sink_input_new(
|
|||
|
||||
i = pa_xnew(pa_sink_input, 1);
|
||||
i->ref = 1;
|
||||
i->state = PA_SINK_INPUT_RUNNING;
|
||||
i->state = PA_SINK_INPUT_DRAINED;
|
||||
i->name = pa_xstrdup(name);
|
||||
i->driver = pa_xstrdup(driver);
|
||||
i->owner = NULL;
|
||||
|
|
@ -112,8 +112,6 @@ pa_sink_input* pa_sink_input_new(
|
|||
i->underrun = NULL;
|
||||
i->userdata = NULL;
|
||||
|
||||
i->playing = 0;
|
||||
|
||||
pa_memchunk_reset(&i->resampled_chunk);
|
||||
i->resampler = resampler;
|
||||
|
||||
|
|
@ -149,7 +147,6 @@ void pa_sink_input_disconnect(pa_sink_input *i) {
|
|||
i->get_latency = NULL;
|
||||
i->underrun = NULL;
|
||||
|
||||
i->playing = 0;
|
||||
i->state = PA_SINK_INPUT_DISCONNECTED;
|
||||
}
|
||||
|
||||
|
|
@ -225,6 +222,8 @@ int pa_sink_input_peek(pa_sink_input *i, pa_memchunk *chunk, pa_cvolume *volume)
|
|||
if (!i->peek || !i->drop || i->state == PA_SINK_INPUT_CORKED)
|
||||
goto finish;
|
||||
|
||||
assert(i->state == PA_SINK_INPUT_RUNNING || i->state == PA_SINK_INPUT_DRAINED);
|
||||
|
||||
if (!i->resampler) {
|
||||
do_volume_adj_here = 0;
|
||||
ret = i->peek(i, chunk);
|
||||
|
|
@ -270,10 +269,13 @@ int pa_sink_input_peek(pa_sink_input *i, pa_memchunk *chunk, pa_cvolume *volume)
|
|||
|
||||
finish:
|
||||
|
||||
if (ret < 0 && i->playing && i->underrun)
|
||||
if (ret < 0 && i->state == PA_SINK_INPUT_RUNNING && i->underrun)
|
||||
i->underrun(i);
|
||||
|
||||
i->playing = ret >= 0;
|
||||
if (ret >= 0)
|
||||
i->state = PA_SINK_INPUT_RUNNING;
|
||||
else if (ret < 0 && i->state == PA_SINK_INPUT_RUNNING)
|
||||
i->state = PA_SINK_INPUT_DRAINED;
|
||||
|
||||
if (ret >= 0) {
|
||||
/* Let's see if we had to apply the volume adjustment
|
||||
|
|
@ -342,12 +344,14 @@ void pa_sink_input_cork(pa_sink_input *i, int b) {
|
|||
assert(i);
|
||||
assert(i->ref >= 1);
|
||||
|
||||
if (i->state == PA_SINK_INPUT_DISCONNECTED)
|
||||
return;
|
||||
assert(i->state != PA_SINK_INPUT_DISCONNECTED);
|
||||
|
||||
n = i->state == PA_SINK_INPUT_CORKED && !b;
|
||||
|
||||
i->state = b ? PA_SINK_INPUT_CORKED : PA_SINK_INPUT_RUNNING;
|
||||
|
||||
if (b)
|
||||
i->state = PA_SINK_INPUT_CORKED;
|
||||
else if (i->state == PA_SINK_INPUT_CORKED)
|
||||
i->state = PA_SINK_INPUT_DRAINED;
|
||||
|
||||
if (n)
|
||||
pa_sink_notify(i->sink);
|
||||
|
|
|
|||
|
|
@ -34,9 +34,10 @@ typedef struct pa_sink_input pa_sink_input;
|
|||
#include <pulsecore/client.h>
|
||||
|
||||
typedef enum pa_sink_input_state {
|
||||
PA_SINK_INPUT_RUNNING,
|
||||
PA_SINK_INPUT_CORKED,
|
||||
PA_SINK_INPUT_DISCONNECTED
|
||||
PA_SINK_INPUT_RUNNING, /*< The stream is alive and kicking */
|
||||
PA_SINK_INPUT_DRAINED, /*< The stream stopped playing because there was no data to play */
|
||||
PA_SINK_INPUT_CORKED, /*< The stream was corked on user request */
|
||||
PA_SINK_INPUT_DISCONNECTED /*< The stream is dead */
|
||||
} pa_sink_input_state_t;
|
||||
|
||||
struct pa_sink_input {
|
||||
|
|
@ -63,8 +64,6 @@ struct pa_sink_input {
|
|||
|
||||
void *userdata;
|
||||
|
||||
int playing;
|
||||
|
||||
pa_memchunk resampled_chunk;
|
||||
pa_resampler *resampler;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue