From d5b19efe7906ed35ba89ece8c3dc3ef098a9f114 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <icculus@icculus.org>
Date: Mon, 12 Oct 2009 08:58:12 +0000
Subject: [PATCH] Forcibly disabled MMX mixers.

  Hopefully fixes Bugzilla #649.

--HG--
branch : SDL-1.2
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%404059
---
 src/audio/SDL_mixer.c        | 6 ++++++
 src/audio/SDL_mixer_MMX.c    | 3 ++-
 src/audio/SDL_mixer_MMX.h    | 2 ++
 src/audio/SDL_mixer_MMX_VC.c | 2 ++
 src/audio/SDL_mixer_MMX_VC.h | 2 ++
 5 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/audio/SDL_mixer.c b/src/audio/SDL_mixer.c
index 0304f622..5a1d7efe 100644
--- a/src/audio/SDL_mixer.c
+++ b/src/audio/SDL_mixer.c
@@ -128,6 +128,7 @@ void SDL_MixAudio (Uint8 *dst, const Uint8 *src, Uint32 len, int volume)
 		break;
 
 		case AUDIO_S8: {
+#if defined(SDL_BUGGY_MMX_MIXERS) /* buggy, so we're disabling them. --ryan. */
 #if defined(__GNUC__) && defined(__i386__) && defined(SDL_ASSEMBLY_ROUTINES)
 			if (SDL_HasMMX())
 			{
@@ -141,6 +142,8 @@ void SDL_MixAudio (Uint8 *dst, const Uint8 *src, Uint32 len, int volume)
 			}
 			else
 #endif
+#endif
+
 #if defined(__GNUC__) && defined(__M68000__) && defined(SDL_ASSEMBLY_ROUTINES)
 			SDL_MixAudio_m68k_S8((char*)dst,(char*)src,(unsigned long)len,(long)volume);
 #else
@@ -174,6 +177,7 @@ void SDL_MixAudio (Uint8 *dst, const Uint8 *src, Uint32 len, int volume)
 		break;
 
 		case AUDIO_S16LSB: {
+#if defined(SDL_BUGGY_MMX_MIXERS) /* buggy, so we're disabling them. --ryan. */
 #if defined(__GNUC__) && defined(__i386__) && defined(SDL_ASSEMBLY_ROUTINES)
 			if (SDL_HasMMX())
 			{
@@ -187,6 +191,8 @@ void SDL_MixAudio (Uint8 *dst, const Uint8 *src, Uint32 len, int volume)
 			}
 			else
 #endif
+#endif
+
 #if defined(__GNUC__) && defined(__M68000__) && defined(SDL_ASSEMBLY_ROUTINES)
 			SDL_MixAudio_m68k_S16LSB((short*)dst,(short*)src,(unsigned long)len,(long)volume);
 #else
diff --git a/src/audio/SDL_mixer_MMX.c b/src/audio/SDL_mixer_MMX.c
index 602b0b78..10b1ccb0 100644
--- a/src/audio/SDL_mixer_MMX.c
+++ b/src/audio/SDL_mixer_MMX.c
@@ -35,6 +35,7 @@
 *   Mixing for 16 bit signed buffers
 ***********************************************/
 
+#if defined(SDL_BUGGY_MMX_MIXERS) /* buggy, so we're disabling them. --ryan. */
 #if defined(__GNUC__) && defined(__i386__) && defined(SDL_ASSEMBLY_ROUTINES)
 void SDL_MixAudio_MMX_S16(char* dst,char* src,unsigned int size,int volume)
 {
@@ -203,4 +204,4 @@ void SDL_MixAudio_MMX_S8(char* dst,char* src,unsigned int size,int volume)
 	 );
 }
 #endif
-
+#endif
diff --git a/src/audio/SDL_mixer_MMX.h b/src/audio/SDL_mixer_MMX.h
index 5a62683b..836b2595 100644
--- a/src/audio/SDL_mixer_MMX.h
+++ b/src/audio/SDL_mixer_MMX.h
@@ -8,8 +8,10 @@
 */
 #include "SDL_config.h"
 
+#if defined(SDL_BUGGY_MMX_MIXERS) /* buggy, so we're disabling them. --ryan. */
 #if defined(__GNUC__) && defined(__i386__) && defined(SDL_ASSEMBLY_ROUTINES)
 void SDL_MixAudio_MMX_S16(char* ,char* ,unsigned int ,int );
 void SDL_MixAudio_MMX_S8(char* ,char* ,unsigned int ,int );
 #endif
+#endif
 
diff --git a/src/audio/SDL_mixer_MMX_VC.c b/src/audio/SDL_mixer_MMX_VC.c
index 20975342..e9d53c13 100644
--- a/src/audio/SDL_mixer_MMX_VC.c
+++ b/src/audio/SDL_mixer_MMX_VC.c
@@ -23,6 +23,7 @@
 
 #include "SDL_mixer_MMX_VC.h"
 
+#if defined(SDL_BUGGY_MMX_MIXERS) /* buggy, so we're disabling them. --ryan. */
 #if ((defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)) && defined(SDL_ASSEMBLY_ROUTINES)
 // MMX assembler version of SDL_MixAudio for signed little endian 16 bit samples and signed 8 bit samples
 // Copyright 2002 Stephane Marchesin (stephane.marchesin@wanadoo.fr)
@@ -179,3 +180,4 @@ endS8:
 }
 
 #endif /* SDL_ASSEMBLY_ROUTINES */
+#endif /* SDL_BUGGY_MMX_MIXERS */
diff --git a/src/audio/SDL_mixer_MMX_VC.h b/src/audio/SDL_mixer_MMX_VC.h
index 9af7a64a..7c67a36b 100644
--- a/src/audio/SDL_mixer_MMX_VC.h
+++ b/src/audio/SDL_mixer_MMX_VC.h
@@ -22,6 +22,7 @@
 #include "SDL_config.h"
 
 
+#if defined(SDL_BUGGY_MMX_MIXERS) /* buggy, so we're disabling them. --ryan. */
 #if ((defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__)) && defined(SDL_ASSEMBLY_ROUTINES)
 /* headers for MMX assembler version of SDL_MixAudio
    Copyright 2002 Stephane Marchesin (stephane.marchesin@wanadoo.fr)
@@ -34,3 +35,4 @@
 void SDL_MixAudio_MMX_S16_VC(char* ,char* ,unsigned int ,int );
 void SDL_MixAudio_MMX_S8_VC(char* ,char* ,unsigned int ,int );
 #endif
+#endif
-- 
2.18.1