about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/engine/client/snd.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/engine/client/snd.cpp b/src/engine/client/snd.cpp
index ce854050..68b8d23f 100644
--- a/src/engine/client/snd.cpp
+++ b/src/engine/client/snd.cpp
@@ -137,13 +137,18 @@ public:
 						channels[c].data->sustain_start >= 0 &&
 						channels[c].tick >= channels[c].data->sustain_end)
 					channels[c].tick = channels[c].data->sustain_start;
-				if(channels[c].tick >= channels[c].data->num_samples)
+
+				if(channels[c].stop >= 0)
+					channels[c].stop -=  to_fill;
+				if(channels[c].tick >= channels[c].data->num_samples ||
+						channels[c].stop == 0)
 					channels[c].data = 0;
 
 				channels[c].lerp -= to_fill;
 				if(channels[c].lerp < 0)
 					channels[c].lerp = -1;
 
+
 				filled += to_fill;
 			}
 		}