foxygit / doom Log in
commit 5160ceb4512b8bb5839df898a4aff0c6779578c5
Author:     James Haley <haleyjd@hotmail.com>
AuthorDate: Fri Feb 20 20:01:02 2015 -0600
Commit:     James Haley <haleyjd@hotmail.com>
CommitDate: Fri Feb 20 20:01:02 2015 -0600

    Strife sound priority fix

    The Strife binary has another priority check in the first loop inside
    S_GetChannel. TODO: Does DOS Doom have this as well? Find out.

    Resolves issue #506.
---
 src/strife/s_sound.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/strife/s_sound.c b/src/strife/s_sound.c
index 7a919737..d22f84e4 100644
--- a/src/strife/s_sound.c
+++ b/src/strife/s_sound.c
@@ -277,7 +277,7 @@ static int S_GetChannel(mobj_t *origin, sfxinfo_t *sfxinfo, boolean isvoice)
     channel_t*        c;

     // Find an open channel
-     for (cnum=0 ; cnum<snd_channels ; cnum++)
+    for (cnum=0 ; cnum<snd_channels ; cnum++)
     {
         if (!channels[cnum].sfxinfo)
         {
@@ -286,6 +286,11 @@ static int S_GetChannel(mobj_t *origin, sfxinfo_t *sfxinfo, boolean isvoice)
         else if (origin && channels[cnum].origin == origin &&
                  (isvoice || cnum != i_voicehandle)) // haleyjd
         {
+            // haleyjd 20150220: [STRIFE] missing sound channel priority check
+            // Is a higher priority sound by same origin already playing?
+            if(!isvoice && sfxinfo->priority > channels[cnum].sfxinfo->priority)
+                return -1;
+
             S_StopChannel(cnum);
             break;
         }