mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-08 13:29:59 -05:00
Move a few things between the threads
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1476 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
111dcd5e34
commit
1b99fd2fc4
1 changed files with 12 additions and 3 deletions
|
|
@ -88,6 +88,7 @@ struct pa_protocol_simple {
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
SINK_INPUT_MESSAGE_POST_DATA = PA_SINK_INPUT_MESSAGE_MAX, /* data from main loop to sink input */
|
SINK_INPUT_MESSAGE_POST_DATA = PA_SINK_INPUT_MESSAGE_MAX, /* data from main loop to sink input */
|
||||||
|
SINK_INPUT_MESSAGE_DISABLE_PREBUF /* disabled prebuf, get playback started. */
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
|
@ -189,7 +190,7 @@ static int do_read(connection *c) {
|
||||||
|
|
||||||
c->playback.memblock_index += r;
|
c->playback.memblock_index += r;
|
||||||
|
|
||||||
pa_asyncmsgq_post(c->protocol->core->asyncmsgq, PA_MSGOBJECT(c->sink_input), SINK_INPUT_MESSAGE_POST_DATA, NULL, &chunk, NULL);
|
pa_asyncmsgq_post(c->sink_input->sink->asyncmsgq, PA_MSGOBJECT(c->sink_input), SINK_INPUT_MESSAGE_POST_DATA, NULL, &chunk, NULL);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -259,7 +260,7 @@ fail:
|
||||||
pa_iochannel_free(c->io);
|
pa_iochannel_free(c->io);
|
||||||
c->io = NULL;
|
c->io = NULL;
|
||||||
|
|
||||||
pa_memblockq_prebuf_disable(c->input_memblockq);
|
pa_asyncmsgq_post(c->sink_input->sink->asyncmsgq, PA_MSGOBJECT(c->sink_input), SINK_INPUT_MESSAGE_DISABLE_PREBUF, NULL, NULL, NULL);
|
||||||
} else
|
} else
|
||||||
connection_drop(c);
|
connection_drop(c);
|
||||||
}
|
}
|
||||||
|
|
@ -282,7 +283,6 @@ static int connection_process_msg(pa_msgobject *o, int code, void*userdata, pa_m
|
||||||
case MESSAGE_DROP_CONNECTION:
|
case MESSAGE_DROP_CONNECTION:
|
||||||
connection_drop(c);
|
connection_drop(c);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -308,6 +308,13 @@ static int sink_input_process_msg(pa_msgobject *o, int code, void *userdata, pa_
|
||||||
pa_memblockq_push_align(c->input_memblockq, chunk);
|
pa_memblockq_push_align(c->input_memblockq, chunk);
|
||||||
pa_atomic_store(&c->playback.missing, pa_memblockq_missing(c->input_memblockq));
|
pa_atomic_store(&c->playback.missing, pa_memblockq_missing(c->input_memblockq));
|
||||||
|
|
||||||
|
/* pa_log("got data, %u", pa_memblockq_get_length(c->input_memblockq)); */
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
case SINK_INPUT_MESSAGE_DISABLE_PREBUF: {
|
||||||
|
pa_memblockq_prebuf_disable(c->input_memblockq);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -337,6 +344,8 @@ static int sink_input_peek_cb(pa_sink_input *i, pa_memchunk *chunk) {
|
||||||
|
|
||||||
r = pa_memblockq_peek(c->input_memblockq, chunk);
|
r = pa_memblockq_peek(c->input_memblockq, chunk);
|
||||||
|
|
||||||
|
/* pa_log("peeked %u %i", r >= 0 ? chunk->length: 0, r); */
|
||||||
|
|
||||||
if (c->dead && r < 0)
|
if (c->dead && r < 0)
|
||||||
pa_asyncmsgq_post(c->protocol->core->asyncmsgq, PA_MSGOBJECT(c), MESSAGE_DROP_CONNECTION, c, NULL, NULL);
|
pa_asyncmsgq_post(c->protocol->core->asyncmsgq, PA_MSGOBJECT(c), MESSAGE_DROP_CONNECTION, c, NULL, NULL);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue