always create a default device in server mode

This commit is contained in:
Alexandre Ratchov 2011-11-14 09:29:33 +01:00
parent dafad3b44a
commit 73d8f28428
3 changed files with 21 additions and 27 deletions

View File

@ -548,24 +548,25 @@ main(int argc, char **argv)
fputs(usagestr, stderr);
exit(1);
}
if (dev_list == NULL)
mkdev(DEFAULT_DEV, 0, bufsz, round, hold, autovol);
for (d = dev_list; d != NULL; d = d->next) {
if ((d->reqmode & (MODE_PLAYREC | MODE_MIDIMASK)) != 0)
continue;
mkopt("default", d, &rpar, &ppar, mode, vol, mmc, join);
server = 1;
}
if (wav_list) {
if (server)
errx(1, "-io not allowed in server mode");
if ((d = dev_list) && d->next)
errx(1, "single device required in non-server mode");
errx(1, "only one device allowed in non-server mode");
if ((d->reqmode & MODE_THRU) && d->ctl_list == NULL) {
if (!devctl_add(d, "default", MODE_MIDIMASK))
errx(1, "%s: can't open port", optarg);
d->reqmode |= MODE_MIDIMASK;
}
} else {
if (dev_list == NULL)
mkdev(DEFAULT_DEV, 0, bufsz, round, hold, autovol);
for (d = dev_list; d != NULL; d = d->next) {
if (opt_byname("default", d->num))
continue;
mkopt("default", d, &rpar, &ppar, mode, vol, mmc, join);
server = 1;
}
}
if (server) {
getbasepath(base, sizeof(base));

View File

@ -122,26 +122,9 @@ opt_byname(char *name, unsigned num)
for (o = opt_list; o != NULL; o = o->next) {
if (o->dev->num != num)
continue;
if (strcmp(name, o->name) == 0) {
#ifdef DEBUG
if (debug_level >= 3) {
dbg_putu(num);
dbg_puts(".");
dbg_puts(name);
dbg_puts(": option found\n");
}
#endif
if (strcmp(name, o->name) == 0)
return o;
}
}
#ifdef DEBUG
if (debug_level >= 3) {
dbg_putu(num);
dbg_puts(".");
dbg_puts(name);
dbg_puts(": option not found\n");
}
#endif
return NULL;
}

View File

@ -1036,6 +1036,16 @@ sock_hello(struct sock *f)
f->opt = opt_byname(p->opt, AMSG_ISSET(p->devnum) ? p->devnum : 0);
if (f->opt == NULL)
return 0;
#ifdef DEBUG
if (debug_level >= 3) {
sock_dbg(f);
dbg_puts(": using ");
dev_dbg(f->opt->dev);
dbg_puts(".");
dbg_puts(f->opt->name);
dbg_puts("\n");
}
#endif
if (!dev_ref(f->opt->dev))
return 0;
if ((mode & MODE_REC) && (f->opt->mode & MODE_MON)) {