From 90dfaa02ee636c4241950cbb3ee9a9d68dc14375 Mon Sep 17 00:00:00 2001 From: Squareys Date: Sun, 18 Oct 2015 18:12:10 +0200 Subject: [PATCH] Audio: Fix listener.update() and add regression test. Any empty group would result in application crash. Signed-off-by: Squareys --- src/Magnum/Audio/Listener.cpp | 2 +- src/Magnum/Audio/Test/ListenerTest.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Magnum/Audio/Listener.cpp b/src/Magnum/Audio/Listener.cpp index 3c952795d..1d5516a76 100644 --- a/src/Magnum/Audio/Listener.cpp +++ b/src/Magnum/Audio/Listener.cpp @@ -88,7 +88,7 @@ template void Listener::update(std::initiali objects.push_back(this->object()); for(PlayableGroup& group : groups) { - for(UnsignedInt i = 0; i < groups.size(); ++i) { + for(UnsignedInt i = 0; i < group.size(); ++i) { objects.push_back(group[i].object()); } } diff --git a/src/Magnum/Audio/Test/ListenerTest.cpp b/src/Magnum/Audio/Test/ListenerTest.cpp index 2127e15ef..c64c1ce61 100644 --- a/src/Magnum/Audio/Test/ListenerTest.cpp +++ b/src/Magnum/Audio/Test/ListenerTest.cpp @@ -89,6 +89,7 @@ void ListenerTest::testUpdateGroups() { Object3D sourceObject{&scene}; Object3D object{&scene}; PlayableGroup3D group; + PlayableGroup3D emptyGroup; Playable3D playable{sourceObject, &group}; Listener3D listener{object}; @@ -97,7 +98,7 @@ void ListenerTest::testUpdateGroups() { object.translate(offset); sourceObject.translate(offset*13.0f); - listener.update({group}); + listener.update({group, emptyGroup}); CORRADE_COMPARE(Renderer::listenerPosition(), offset); constexpr Vector3 rotatedFwd{-1.0f, 0.0f, 0.0f};