diff options
Diffstat (limited to 'src/modules/module-pipe-source.c')
| -rw-r--r-- | src/modules/module-pipe-source.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/modules/module-pipe-source.c b/src/modules/module-pipe-source.c index 61c9fc0e..a941f088 100644 --- a/src/modules/module-pipe-source.c +++ b/src/modules/module-pipe-source.c @@ -27,12 +27,13 @@ #include <sys/stat.h> #include <stdio.h> #include <errno.h> -#include <string.h> #include <fcntl.h> #include <unistd.h> -#include <limits.h> #include <sys/ioctl.h> -#include <sys/poll.h> + +#ifdef HAVE_SYS_FILIO_H +#include <sys/filio.h> +#endif #include <pulse/xmalloc.h> @@ -45,6 +46,7 @@ #include <pulsecore/thread.h> #include <pulsecore/thread-mq.h> #include <pulsecore/rtpoll.h> +#include <pulsecore/poll.h> #include "module-pipe-source-symdef.h" @@ -105,9 +107,10 @@ static int source_process_msg( case PA_SOURCE_MESSAGE_GET_LATENCY: { size_t n = 0; - int l; #ifdef FIONREAD + int l; + if (ioctl(u->fd, FIONREAD, &l) >= 0 && l > 0) n = (size_t) l; #endif @@ -129,7 +132,6 @@ static void thread_func(void *userdata) { pa_log_debug("Thread starting up"); pa_thread_mq_install(&u->thread_mq); - pa_rtpoll_install(u->rtpoll); for (;;) { int ret; @@ -143,7 +145,7 @@ static void thread_func(void *userdata) { void *p; if (!u->memchunk.memblock) { - u->memchunk.memblock = pa_memblock_new(u->core->mempool, PIPE_BUF); + u->memchunk.memblock = pa_memblock_new(u->core->mempool, pa_pipe_buf(u->fd)); u->memchunk.index = u->memchunk.length = 0; } @@ -160,7 +162,7 @@ static void thread_func(void *userdata) { if (errno == EINTR) continue; else if (errno != EAGAIN) { - pa_log("Faile to read data from FIFO: %s", pa_cstrerror(errno)); + pa_log("Failed to read data from FIFO: %s", pa_cstrerror(errno)); goto fail; } @@ -239,12 +241,11 @@ int pa__init(pa_module*m) { u->filename = pa_runtime_path(pa_modargs_get_value(ma, "file", DEFAULT_FILE_NAME)); mkfifo(u->filename, 0666); - if ((u->fd = open(u->filename, O_RDWR|O_NOCTTY)) < 0) { + if ((u->fd = pa_open_cloexec(u->filename, O_RDWR, 0)) < 0) { pa_log("open('%s'): %s", u->filename, pa_cstrerror(errno)); goto fail; } - pa_make_fd_cloexec(u->fd); pa_make_fd_nonblock(u->fd); if (fstat(u->fd, &st) < 0) { @@ -292,7 +293,7 @@ int pa__init(pa_module*m) { pollfd->fd = u->fd; pollfd->events = pollfd->revents = 0; - if (!(u->thread = pa_thread_new(thread_func, u))) { + if (!(u->thread = pa_thread_new("pipe-source", thread_func, u))) { pa_log("Failed to create thread."); goto fail; } |
