about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine/client/snd.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/engine/client/snd.cpp b/src/engine/client/snd.cpp
index a4ed957c..ce854050 100644
--- a/src/engine/client/snd.cpp
+++ b/src/engine/client/snd.cpp
@@ -110,11 +110,12 @@ public:
 			unsigned long filled = 0;
 			while(channels[c].data && filled < frames)
 			{
-				unsigned long to_fill = frames;
+				unsigned long frames_left = (channels[c].data->num_samples - channels[c].tick) >> (channels[c].data->channels-1);
+				unsigned long to_fill = frames>frames_left?frames_left:frames;
 				float dv = 0.0f;
 
 				if(channels[c].stop >= 0)
-					to_fill = (unsigned)channels[c].stop>frames?frames:channels[c].stop;
+					to_fill = (unsigned)channels[c].stop>frames_left?frames:channels[c].stop;
 				if(channels[c].loop >= 0 &&
 						channels[c].data->sustain_start >= 0)
 				{