shithub: dumb

Download patch

ref: 5b83c82c3cc13dd2eeec47758fde4cd61d455bd6
parent: 796c801be6b1db3a800a844ab58b9a5454951ace
author: Chris Moeller <[email protected]>
date: Wed Jun 12 01:56:32 EDT 2013

Fixed intermittent noise with SSE resonant filters by special casing zero length render calls

--- a/dumb/src/it/itrender.c
+++ b/dumb/src/it/itrender.c
@@ -767,7 +767,7 @@
 		}
 
 		currsample = _mm_cvtss_si32( temp1 );
-		temp1 = _mm_shuffle_ps( temp1, temp1, _MM_SHUFFLE(0, 0, 0, 2) );
+		temp1 = _mm_shuffle_ps( temp1, data, _MM_SHUFFLE(0, 0, 0, 2) );
 		prevsample = _mm_cvtss_si32( temp1 );
 
 		if (cr) {
@@ -5427,6 +5427,7 @@
 
 static void render(DUMB_IT_SIGRENDERER *sigrenderer, float volume, float delta, long pos, long size, sample_t **samples)
 {
+	if (size == 0) return;
 	if (sigrenderer->n_channels == 1 || sigrenderer->n_channels == 2)
 		render_normal(sigrenderer, volume, delta, pos, size, samples);
 	else if (sigrenderer->n_channels == 3)