mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-08 13:29:59 -05:00
pipe-sink: use existing fifo
Allow usage of an already existing fifo (named pipe) within the pipe-sink module. Also, the used fifo is going to be removed upon module unload only if the fifo is created by the same module.
This commit is contained in:
parent
fb8f978676
commit
2563cd65bc
1 changed files with 11 additions and 4 deletions
|
|
@ -78,6 +78,7 @@ struct userdata {
|
||||||
|
|
||||||
char *filename;
|
char *filename;
|
||||||
int fd;
|
int fd;
|
||||||
|
bool do_unlink_fifo;
|
||||||
size_t buffer_size;
|
size_t buffer_size;
|
||||||
size_t bytes_dropped;
|
size_t bytes_dropped;
|
||||||
bool fifo_error;
|
bool fifo_error;
|
||||||
|
|
@ -450,11 +451,16 @@ int pa__init(pa_module *m) {
|
||||||
u->write_type = 0;
|
u->write_type = 0;
|
||||||
|
|
||||||
u->filename = pa_runtime_path(pa_modargs_get_value(ma, "file", DEFAULT_FILE_NAME));
|
u->filename = pa_runtime_path(pa_modargs_get_value(ma, "file", DEFAULT_FILE_NAME));
|
||||||
|
u->do_unlink_fifo = false;
|
||||||
|
|
||||||
if (mkfifo(u->filename, 0666) < 0) {
|
if (mkfifo(u->filename, 0666) < 0) {
|
||||||
pa_log("mkfifo('%s'): %s", u->filename, pa_cstrerror(errno));
|
if (errno != EEXIST) {
|
||||||
goto fail;
|
pa_log("mkfifo('%s'): %s", u->filename, pa_cstrerror(errno));
|
||||||
}
|
goto fail;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
u->do_unlink_fifo = true;
|
||||||
|
|
||||||
if ((u->fd = pa_open_cloexec(u->filename, O_RDWR, 0)) < 0) {
|
if ((u->fd = pa_open_cloexec(u->filename, O_RDWR, 0)) < 0) {
|
||||||
pa_log("open('%s'): %s", u->filename, pa_cstrerror(errno));
|
pa_log("open('%s'): %s", u->filename, pa_cstrerror(errno));
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
@ -584,7 +590,8 @@ void pa__done(pa_module *m) {
|
||||||
pa_rtpoll_free(u->rtpoll);
|
pa_rtpoll_free(u->rtpoll);
|
||||||
|
|
||||||
if (u->filename) {
|
if (u->filename) {
|
||||||
unlink(u->filename);
|
if (u->do_unlink_fifo)
|
||||||
|
unlink(u->filename);
|
||||||
pa_xfree(u->filename);
|
pa_xfree(u->filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue