]> code.delx.au - pulseaudio/commitdiff
fix IDLE vs. RUNNING state handling of sinks/sources when changing cork status for...
authorLennart Poettering <lennart@poettering.net>
Mon, 24 Sep 2007 22:41:00 +0000 (22:41 +0000)
committerLennart Poettering <lennart@poettering.net>
Mon, 24 Sep 2007 22:41:00 +0000 (22:41 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1899 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/pulsecore/sink-input.c
src/pulsecore/source-output.c

index 632cf024d934839c09735dd159663c7dbe952584..e99e0a08763753eaad328f920141abdd51ed8a9f 100644 (file)
@@ -233,6 +233,8 @@ static void update_n_corked(pa_sink_input *i, pa_sink_input_state_t state) {
         pa_assert_se(i->sink->n_corked -- >= 1);
     else if (i->state != PA_SINK_INPUT_CORKED && state == PA_SINK_INPUT_CORKED)
         i->sink->n_corked++;
+
+    pa_sink_update_status(i->sink);
 }
 
 static int sink_input_set_state(pa_sink_input *i, pa_sink_input_state_t state) {
@@ -350,6 +352,9 @@ void pa_sink_input_put(pa_sink_input *i) {
     i->thread_info.volume = i->volume;
     i->thread_info.muted = i->muted;
 
+    if (i->state == PA_SINK_INPUT_CORKED)
+        i->sink->n_corked++;
+
     pa_asyncmsgq_send(i->sink->asyncmsgq, PA_MSGOBJECT(i->sink), PA_SINK_MESSAGE_ADD_INPUT, i, 0, NULL);
     pa_sink_update_status(i->sink);
 
index f83ca3b6a8e123d6111c790764f1c5a93ca1b83f..207e2a39eeb3a02e92096b9a4c440741b14b6145 100644 (file)
@@ -188,6 +188,8 @@ static int source_output_set_state(pa_source_output *o, pa_source_output_state_t
     else if (o->state != PA_SOURCE_OUTPUT_CORKED && state == PA_SOURCE_OUTPUT_CORKED)
         o->source->n_corked++;
 
+    pa_source_update_status(o->source);
+
     o->state = state;
 
     return 0;
@@ -262,6 +264,9 @@ void pa_source_output_put(pa_source_output *o) {
 
     o->thread_info.state = o->state = o->flags & PA_SOURCE_OUTPUT_START_CORKED ? PA_SOURCE_OUTPUT_CORKED : PA_SOURCE_OUTPUT_RUNNING;
 
+    if (o->state == PA_SOURCE_OUTPUT_CORKED)
+        o->source->n_corked++;
+
     pa_asyncmsgq_send(o->source->asyncmsgq, PA_MSGOBJECT(o->source), PA_SOURCE_MESSAGE_ADD_OUTPUT, o, 0, NULL);
     pa_source_update_status(o->source);