From a9569eb41ed104a8184f9681d1356c2d8e303293 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Wed, 2 Sep 2015 17:05:56 +0200 Subject: [PATCH] mixer: advance position before mixing Sometimes, the play position in stream is behind the out stream, mostly because of timing issue. In this case, the mixer will produce invalid packets which in return will lead to looping on an invalid packet in the audio_drv. Issue #1666. --- repos/os/src/server/mixer/mixer.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/repos/os/src/server/mixer/mixer.cc b/repos/os/src/server/mixer/mixer.cc index 6bc4017798..466e134075 100644 --- a/repos/os/src/server/mixer/mixer.cc +++ b/repos/os/src/server/mixer/mixer.cc @@ -292,11 +292,11 @@ class Audio_out::Mixer : public Thread<1024 * sizeof(addr_t)> continue; } - _mix(); - /* advance position of clients */ _advance_position(); + _mix(); + if (!_left.stream()->empty()) _wait_for_progress(); else