diff --git a/src/seq/seq.c b/src/seq/seq.c index 4807d481..49f013e0 100644 --- a/src/seq/seq.c +++ b/src/seq/seq.c @@ -4449,13 +4449,14 @@ int snd_seq_drain_output(snd_seq_t *seq) while (seq->obufused > 0) { result = seq->ops->write(seq, seq->obuf, seq->obufused); if (result < 0) { - if (result == -EAGAIN && processed) + if (result == -EAGAIN && processed > 0) return seq->obufused; return result; } if ((size_t)result < seq->obufused) memmove(seq->obuf, seq->obuf + result, seq->obufused - result); seq->obufused -= result; + processed += result; } return 0; }