Merged r3094:3095 from branches/SDL-1.2: Visual C++ 6.0 fixes.
authorRyan C. Gordon <icculus@icculus.org>
Thu, 21 Jun 2007 18:21:49 +0000
changeset 2132 46648dc418ec
parent 2131 55c7932d1fdb
child 2133 03715e20ec3c
Merged r3094:3095 from branches/SDL-1.2: Visual C++ 6.0 fixes.
include/SDL_config_win32.h
src/video/SDL_blit_A.c
--- a/include/SDL_config_win32.h	Wed Jun 20 00:01:04 2007 +0000
+++ b/include/SDL_config_win32.h	Thu Jun 21 18:21:49 2007 +0000
@@ -45,6 +45,16 @@
 typedef unsigned int uintptr_t;
 #endif
 #define _UINTPTR_T_DEFINED
+/* 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;
--- a/src/video/SDL_blit_A.c	Wed Jun 20 00:01:04 2007 +0000
+++ b/src/video/SDL_blit_A.c	Thu Jun 21 18:21:49 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 */