mirror of https://github.com/ericonr/sndio.git
upon connection copy the maxweight parameter from the opt structure
This commit is contained in:
parent
41b3188fd4
commit
526f2d2b92
12
sndiod/dev.c
12
sndiod/dev.c
|
@ -865,13 +865,13 @@ void
|
|||
dev_onmove(struct dev *d, int delta)
|
||||
{
|
||||
long long pos;
|
||||
struct slot *s;
|
||||
struct slot *s, *snext;
|
||||
|
||||
/*
|
||||
* XXX: - what about the start signal
|
||||
* - can s->ops->onmove() reorder the list?
|
||||
* s->ops->onmove() may remove the slot
|
||||
*/
|
||||
for (s = d->slot_list; s != NULL; s = s->next) {
|
||||
for (s = d->slot_list; s != NULL; s = snext) {
|
||||
snext = s->next;
|
||||
pos = (long long)delta * s->round + s->delta_rem;
|
||||
s->delta_rem = pos % d->round;
|
||||
s->delta += pos / (int)d->round;
|
||||
|
@ -1592,8 +1592,6 @@ slot_setvol(struct slot *s, unsigned int vol)
|
|||
if (s->ops == NULL)
|
||||
return;
|
||||
s->mix.vol = MIDI_TO_ADATA(s->vol);
|
||||
dev_mix_setmaster(s->dev);
|
||||
dev_midi_vol(s->dev, s);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1812,8 +1810,6 @@ slot_start(struct slot *s)
|
|||
abuf_init(&s->sub.buf, bufsz,
|
||||
s->par.bps * (s->sub.slot_cmax - s->sub.slot_cmin + 1));
|
||||
}
|
||||
/* XXX: maxweight should be set by the socket layer */
|
||||
s->mix.maxweight = MIDI_TO_ADATA(MIDI_MAXCTL);
|
||||
s->mix.weight = MIDI_TO_ADATA(MIDI_MAXCTL);
|
||||
#ifdef DEBUG
|
||||
if (log_level >= 3) {
|
||||
|
|
|
@ -94,7 +94,7 @@ struct slot {
|
|||
char name[SLOT_NAMEMAX]; /* name matching [a-z]+ */
|
||||
unsigned int unit; /* instance of name */
|
||||
unsigned int serial; /* global unique number */
|
||||
unsigned int vol; /* saved midi volume */
|
||||
unsigned int vol; /* current (midi) volume */
|
||||
unsigned int tstate; /* mmc state */
|
||||
unsigned int midichan; /* for volume messages */
|
||||
};
|
||||
|
@ -208,12 +208,13 @@ void dev_onmove(struct dev *, int);
|
|||
void dev_cycle(struct dev *);
|
||||
|
||||
/*
|
||||
* midi call-backs
|
||||
* midi & midi call-backs
|
||||
*/
|
||||
void dev_mmcstart(struct dev *);
|
||||
void dev_mmcstop(struct dev *);
|
||||
void dev_mmcloc(struct dev *, unsigned int);
|
||||
void dev_master(struct dev *, unsigned int);
|
||||
void dev_midi_vol(struct dev *, struct slot *);
|
||||
|
||||
/*
|
||||
* sio_open(3) like interface for clients
|
||||
|
|
|
@ -933,6 +933,7 @@ sock_hello(struct sock *f)
|
|||
s->xrun = XRUN_IGNORE;
|
||||
s->tstate = MMC_OFF;
|
||||
}
|
||||
s->mix.maxweight = f->opt->maxweight;
|
||||
s->dup = f->opt->dup;
|
||||
/* XXX: must convert to slot rate */
|
||||
f->pstate = SOCK_INIT;
|
||||
|
@ -1212,6 +1213,7 @@ sock_execmsg(struct sock *f)
|
|||
f->rtodo = sizeof(struct amsg);
|
||||
f->rstate = SOCK_RMSG;
|
||||
f->lastvol = ctl; /* dont trigger feedback message */
|
||||
dev_midi_vol(s->dev, s);
|
||||
slot_setvol(s, ctl);
|
||||
break;
|
||||
case AMSG_AUTH:
|
||||
|
|
Loading…
Reference in New Issue