]> git.alsa-project.org Git - alsa-lib.git/commitdiff
seq: fix snd_seq_drain_output return value for partial drain
authorJaroslav Kysela <perex@perex.cz>
Tue, 11 Nov 2025 15:17:16 +0000 (16:17 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 12 Nov 2025 14:36:29 +0000 (15:36 +0100)
The processed value was not properly updated thus the partial
flush was not notified properly.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/seq/seq.c

index 4807d4811dcabc1e7b3078f31495961ebe2e7af8..49f013e05c6aa8ca8f48e5011b7bdf94a8e627f5 100644 (file)
@@ -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;
 }