From f992296b9763ceef1f2f013a89b98fe3e68366d5 Mon Sep 17 00:00:00 2001 From: João Paulo Rechi Vita Date: Mon, 11 Aug 2008 22:54:09 -0300 Subject: Hand the stream socket to the rt thread --- src/modules/module-bt-device.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/modules/module-bt-device.c b/src/modules/module-bt-device.c index c0ca6375..da2fa337 100644 --- a/src/modules/module-bt-device.c +++ b/src/modules/module-bt-device.c @@ -113,6 +113,10 @@ static const char* const valid_modargs[] = { NULL }; +enum { + SINK_MESSAGE_PASS_SOCKET = PA_SINK_MESSAGE_MAX +}; + static int bt_audioservice_send(int sk, const bt_audio_msg_header_t *msg) { int e; pa_log/*_debug*/("sending %s", bt_audio_strmsg(msg->msg_type)); @@ -545,15 +549,15 @@ static int sink_process_msg(pa_msgobject *o, int code, void *data, int64_t offse break; } -// case SINK_MESSAGE_PASS_SOCKET: { -// struct pollfd *pollfd; -// pa_assert(!u->rtpoll_item); -// u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1); -// pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL); -// pollfd->fd = u->fd; -// pollfd->events = pollfd->revents = 0; -// return 0; -// } + case SINK_MESSAGE_PASS_SOCKET: { + struct pollfd *pollfd; + pa_assert(!u->rtpoll_item); + u->rtpoll_item = pa_rtpoll_item_new(u->rtpoll, PA_RTPOLL_NEVER, 1); + pollfd = pa_rtpoll_item_get_pollfd(u->rtpoll_item, NULL); + pollfd->fd = u->stream_fd; + pollfd->events = pollfd->revents = 0; + return 0; + } } return pa_sink_process_msg(o, code, data, offset, chunk); @@ -809,6 +813,9 @@ int pa__init(pa_module* m) { } pa_sink_put(u->sink); + /* hand the socket to the rt thread */ + pa_asyncmsgq_post(u->thread_mq.inq, PA_MSGOBJECT(u->sink), SINK_MESSAGE_PASS_SOCKET, NULL, 0, NULL, NULL); + pa_modargs_free(ma); return 0; -- cgit