mirror of https://github.com/ericonr/sndio.git
call sock_write() at the end of sock_read() in order to send
ACKs, initial positions, volumes and alikes. It's not OK to call it in sock_execmsg() because it can generate messages that would be sent before the message to return
This commit is contained in:
parent
dadc1b872c
commit
c70f456e5c
33
aucat/sock.c
33
aucat/sock.c
|
@ -598,14 +598,6 @@ sock_attach(struct sock *f, int force)
|
||||||
f->xrun, f->opt->maxweight);
|
f->xrun, f->opt->maxweight);
|
||||||
if (f->mode & MODE_PLAY)
|
if (f->mode & MODE_PLAY)
|
||||||
dev_setvol(f->dev, rbuf, MIDI_TO_ADATA(f->vol));
|
dev_setvol(f->dev, rbuf, MIDI_TO_ADATA(f->vol));
|
||||||
|
|
||||||
/*
|
|
||||||
* Send the initial position, if needed.
|
|
||||||
*/
|
|
||||||
for (;;) {
|
|
||||||
if (!sock_write(f))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1421,24 +1413,6 @@ sock_execmsg(struct sock *f)
|
||||||
aproc_del(f->pipe.file.rproc);
|
aproc_del(f->pipe.file.rproc);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (f->rstate == SOCK_RRET) {
|
|
||||||
if (f->wstate != SOCK_WIDLE ||
|
|
||||||
!sock_wmsg(f, &f->rmsg, &f->rtodo))
|
|
||||||
return 0;
|
|
||||||
#ifdef DEBUG
|
|
||||||
if (debug_level >= 3) {
|
|
||||||
sock_dbg(f);
|
|
||||||
dbg_puts(": RRET done\n");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if (f->pstate == SOCK_MIDI && (f->mode & MODE_MIDIOUT)) {
|
|
||||||
f->rstate = SOCK_RDATA;
|
|
||||||
f->rtodo = 0;
|
|
||||||
} else {
|
|
||||||
f->rstate = SOCK_RMSG;
|
|
||||||
f->rtodo = sizeof(struct amsg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1625,6 +1599,13 @@ sock_read(struct sock *f)
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
for (;;) {
|
||||||
|
/*
|
||||||
|
* send pending ACKs, initial positions, initial volumes
|
||||||
|
*/
|
||||||
|
if (!sock_write(f))
|
||||||
|
break;
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue