mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-07 13:30:03 -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;
|
||||
int fd;
|
||||
bool do_unlink_fifo;
|
||||
size_t buffer_size;
|
||||
size_t bytes_dropped;
|
||||
bool fifo_error;
|
||||
|
|
@ -450,11 +451,16 @@ int pa__init(pa_module *m) {
|
|||
u->write_type = 0;
|
||||
|
||||
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 (errno != EEXIST) {
|
||||
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) {
|
||||
pa_log("open('%s'): %s", u->filename, pa_cstrerror(errno));
|
||||
goto fail;
|
||||
|
|
@ -584,6 +590,7 @@ void pa__done(pa_module *m) {
|
|||
pa_rtpoll_free(u->rtpoll);
|
||||
|
||||
if (u->filename) {
|
||||
if (u->do_unlink_fifo)
|
||||
unlink(u->filename);
|
||||
pa_xfree(u->filename);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue