Fixes for Visual C++ 6.0 with and without the Processor Pack. SDL-1.2
authorRyan C. Gordon <icculus@icculus.org>
Thu, 21 Jun 2007 18:20:59 +0000
branchSDL-1.2
changeset 3973 5fbd763b1c88
parent 3972 590d6f5da52b
child 3974 42578e98a295
Fixes for Visual C++ 6.0 with and without the Processor Pack.
include/SDL_config_win32.h
src/video/SDL_blit_A.c
--- 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 */