summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorratchov <ratchov@openbsd.org>2021-01-29 10:55:19 +0000
committerratchov <ratchov@openbsd.org>2021-01-29 10:55:19 +0000
commite5be4cb83d673e6eef368bb655a175ac13d1f967 (patch)
treea14ebf7f1e9d28e10d0dfeba778a22db254b2aa2
parentMove the audio clients state out of the device structure (diff)
downloadwireguard-openbsd-e5be4cb83d673e6eef368bb655a175ac13d1f967.tar.xz
wireguard-openbsd-e5be4cb83d673e6eef368bb655a175ac13d1f967.zip
Move the control client state out of the device structure
No behavior change. Later this will ease changing the controlled device by "just" swapping pointers.
-rw-r--r--usr.bin/sndiod/dev.c22
-rw-r--r--usr.bin/sndiod/dev.h10
-rw-r--r--usr.bin/sndiod/sock.c4
3 files changed, 18 insertions, 18 deletions
diff --git a/usr.bin/sndiod/dev.c b/usr.bin/sndiod/dev.c
index a221558f512..83e577f7fa1 100644
--- a/usr.bin/sndiod/dev.c
+++ b/usr.bin/sndiod/dev.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dev.c,v 1.84 2021/01/29 10:51:24 ratchov Exp $ */
+/* $OpenBSD: dev.c,v 1.85 2021/01/29 10:55:19 ratchov Exp $ */
/*
* Copyright (c) 2008-2012 Alexandre Ratchov <alex@caoua.org>
*
@@ -109,6 +109,7 @@ struct slotops zomb_slotops = {
struct dev *dev_list = NULL;
unsigned int dev_sndnum = 0;
+struct ctlslot ctlslot_array[DEV_NCTLSLOT];
struct slot slot_array[DEV_NSLOT];
unsigned int slot_serial; /* for slot allocation */
@@ -1033,7 +1034,6 @@ dev_new(char *path, struct aparams *par,
unsigned int rate, unsigned int hold, unsigned int autovol)
{
struct dev *d;
- unsigned int i;
if (dev_sndnum == DEV_NMAX) {
if (log_level >= 1)
@@ -1066,12 +1066,6 @@ dev_new(char *path, struct aparams *par,
d->autovol = autovol;
d->refcnt = 0;
d->pstate = DEV_CFG;
- for (i = 0; i < DEV_NCTLSLOT; i++) {
- d->ctlslot[i].ops = NULL;
- d->ctlslot[i].dev = d;
- d->ctlslot[i].mask = 0;
- d->ctlslot[i].mode = 0;
- }
d->slot_list = NULL;
d->master = MIDI_MAXCTL;
d->mtc.origin = 0;
@@ -1285,7 +1279,9 @@ dev_abort(struct dev *d)
}
d->slot_list = NULL;
- for (c = d->ctlslot, i = DEV_NCTLSLOT; i > 0; i--, c++) {
+ for (c = ctlslot_array, i = DEV_NCTLSLOT; i > 0; i--, c++) {
+ if (c->dev != d)
+ continue;
if (c->ops)
c->ops->exit(c->arg);
c->ops = NULL;
@@ -2320,7 +2316,7 @@ ctlslot_new(struct dev *d, struct ctlops *ops, void *arg)
for (;;) {
if (i == DEV_NCTLSLOT)
return NULL;
- s = d->ctlslot + i;
+ s = ctlslot_array + i;
if (s->ops == NULL)
break;
i++;
@@ -2425,7 +2421,7 @@ dev_addctl(struct dev *d, char *gstr, int type, int addr,
c->refs_mask = 0;
for (i = 0; i < DEV_NCTLSLOT; i++) {
c->refs_mask |= CTL_DEVMASK;
- if (d->ctlslot[i].ops != NULL)
+ if (ctlslot_array[i].ops != NULL)
c->refs_mask |= 1 << i;
}
for (pc = &d->ctl_list; *pc != NULL; pc = &(*pc)->next)
@@ -2511,8 +2507,8 @@ dev_ctlsync(struct dev *d)
"output", -1, "level", NULL, -1, 127, d->master);
}
- for (s = d->ctlslot, i = DEV_NCTLSLOT; i > 0; i--, s++) {
- if (s->ops)
+ for (s = ctlslot_array, i = DEV_NCTLSLOT; i > 0; i--, s++) {
+ if (s->dev == d && s->ops)
s->ops->sync(s->arg);
}
}
diff --git a/usr.bin/sndiod/dev.h b/usr.bin/sndiod/dev.h
index d06e7f00978..81150bd9a4b 100644
--- a/usr.bin/sndiod/dev.h
+++ b/usr.bin/sndiod/dev.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: dev.h,v 1.32 2021/01/29 10:51:24 ratchov Exp $ */
+/* $OpenBSD: dev.h,v 1.33 2021/01/29 10:55:19 ratchov Exp $ */
/*
* Copyright (c) 2008-2012 Alexandre Ratchov <alex@caoua.org>
*
@@ -33,6 +33,11 @@
#define DEV_NSLOT 8
/*
+ * preallocated control clients
+ */
+#define DEV_NCTLSLOT 8
+
+/*
* audio stream state structure
*/
@@ -258,12 +263,11 @@ struct dev {
*/
struct ctl *ctl_list;
-#define DEV_NCTLSLOT 8
- struct ctlslot ctlslot[DEV_NCTLSLOT];
};
extern struct dev *dev_list;
extern struct slot slot_array[DEV_NSLOT];
+extern struct ctlslot ctlslot_array[DEV_NCTLSLOT];
void slot_array_init(void);
diff --git a/usr.bin/sndiod/sock.c b/usr.bin/sndiod/sock.c
index c7cdc7b9c3b..9ed2e66edd6 100644
--- a/usr.bin/sndiod/sock.c
+++ b/usr.bin/sndiod/sock.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sock.c,v 1.37 2021/01/29 10:51:24 ratchov Exp $ */
+/* $OpenBSD: sock.c,v 1.38 2021/01/29 10:55:19 ratchov Exp $ */
/*
* Copyright (c) 2008-2012 Alexandre Ratchov <alex@caoua.org>
*
@@ -114,7 +114,7 @@ sock_log(struct sock *f)
midi_log(f->midi);
else if (f->ctlslot) {
log_puts("ctlslot");
- log_putu(f->ctlslot - f->ctlslot->dev->ctlslot);
+ log_putu(f->ctlslot - ctlslot_array);
} else
log_puts("sock");
#ifdef DEBUG