diff --git a/sndiod/dev.c b/sndiod/dev.c index 01a5388..513e999 100644 --- a/sndiod/dev.c +++ b/sndiod/dev.c @@ -1059,7 +1059,6 @@ dev_open_do(struct dev *d) } return 0; } - dev_siomix_open(d); if (d->mode & MODE_REC) { /* * Create device <-> demuxer buffer @@ -1175,7 +1174,6 @@ dev_exitall(struct dev *d) { int i; struct slot *s; - struct ctl *c; for (s = d->slot, i = DEV_NSLOT; i > 0; i--, s++) { if (s->ops) @@ -1192,6 +1190,8 @@ dev_exitall(struct dev *d) void dev_close_do(struct dev *d) { + struct ctl *c; + #ifdef DEBUG if (log_level >= 3) { dev_log(d); diff --git a/sndiod/dev_siomix.c b/sndiod/dev_siomix.c index 2bf9b62..8c39c92 100644 --- a/sndiod/dev_siomix.c +++ b/sndiod/dev_siomix.c @@ -95,14 +95,14 @@ dev_siomix_onctl(void *arg, unsigned int addr, unsigned int val) * open the mixer device. */ void -dev_siomix_open(struct dev *d) +dev_siomix_open(struct dev *d, char *path) { - d->siomix.hdl = siomix_open(d->path, SIOMIX_READ | SIOMIX_WRITE, 0); + d->siomix.hdl = siomix_open(path, SIOMIX_READ | SIOMIX_WRITE, 0); if (d->siomix.hdl == NULL) return; siomix_ondesc(d->siomix.hdl, dev_siomix_ondesc, d); siomix_onctl(d->siomix.hdl, dev_siomix_onctl, d); - d->siomix.file = file_new(&dev_siomix_ops, d, d->path, + d->siomix.file = file_new(&dev_siomix_ops, d, path, siomix_nfds(d->siomix.hdl)); } diff --git a/sndiod/dev_siomix.h b/sndiod/dev_siomix.h index 2c74387..3ad9cdf 100644 --- a/sndiod/dev_siomix.h +++ b/sndiod/dev_siomix.h @@ -26,7 +26,7 @@ struct dev_siomix { struct file *file; }; -void dev_siomix_open(struct dev *); +void dev_siomix_open(struct dev *, char *); void dev_siomix_close(struct dev *); #endif /* !defined(DEV_SIOMIX_H) */ diff --git a/sndiod/siofile.c b/sndiod/siofile.c index 60e4a28..376e647 100644 --- a/sndiod/siofile.c +++ b/sndiod/siofile.c @@ -241,6 +241,7 @@ dev_sio_open(struct dev *d) log_puts(path); log_puts("\n"); } + dev_siomix_open(d, path); return 1; bad_close: sio_close(d->sio.hdl); @@ -250,6 +251,7 @@ dev_sio_open(struct dev *d) void dev_sio_close(struct dev *d) { + dev_siomix_close(d); #ifdef DEBUG if (log_level >= 3) { dev_log(d);