Fixes for Visual C++ 6.0 with and without the Processor Pack.
--- a/include/SDL_config_win32.h Sat Jun 16 05:51:51 2007 +0000
+++ b/include/SDL_config_win32.h Thu Jun 21 18:20:59 2007 +0000
@@ -46,6 +46,17 @@
#endif
#define _UINTPTR_T_DEFINED
#endif
+/* Older Visual C++ headers don't have the Win64-compatible typedefs... */
+#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR)))
+#define DWORD_PTR DWORD
+#endif
+#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR)))
+#define LONG_PTR LONG
+#endif
+#ifndef GWLP_HINSTANCE
+#define GWLP_HINSTANCE GWL_HINSTANCE
+#endif
+#endif
#else /* !__GNUC__ && !_MSC_VER */
typedef signed char int8_t;
typedef unsigned char uint8_t;
--- a/src/video/SDL_blit_A.c Sat Jun 16 05:51:51 2007 +0000
+++ b/src/video/SDL_blit_A.c Thu Jun 21 18:20:59 2007 +0000
@@ -24,14 +24,30 @@
#include "SDL_video.h"
#include "SDL_blit.h"
+/*
+ In Visual C, VC6 has mmintrin.h in the "Processor Pack" add-on.
+ Checking if _mm_free is #defined in malloc.h is is the only way to
+ determine if the Processor Pack is installed, as far as I can tell.
+*/
+
#if SDL_ASSEMBLY_ROUTINES
-#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-#define MMX_ASMBLIT 1
-#define GCC_ASMBLIT 1
-#elif defined(_MSC_VER) && (_MSC_VER >= 1200) && defined(_M_IX86)
-#define MMX_ASMBLIT 1
-#define MSVC_ASMBLIT 1
-#endif
+# if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+# define MMX_ASMBLIT 1
+# define GCC_ASMBLIT 1
+# elif defined(_MSC_VER) && defined(_M_IX86)
+# if (_MSC_VER <= 1200)
+# include <malloc.h>
+# if defined(_mm_free)
+# define HAVE_MMINTRIN_H 1
+# endif
+# else /* Visual Studio > VC6 always has mmintrin.h */
+# define HAVE_MMINTRIN_H 1
+# endif
+# if HAVE_MMINTRIN_H
+# define MMX_ASMBLIT 1
+# define MSVC_ASMBLIT 1
+# endif
+# endif
#endif /* SDL_ASSEMBLY_ROUTINES */
/* Function to check the CPU flags */