From b48b60e4e6ed83729bc58461725d4fb78b3ffcad Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 21 Aug 2011 02:35:13 -0400 Subject: [PATCH] Make sure XAudio2 is supported by the DirectX headers at compile time. --- src/audio/xaudio2/SDL_xaudio2.c | 9 +++++++++ src/audio/xaudio2/SDL_xaudio2.h | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/audio/xaudio2/SDL_xaudio2.c b/src/audio/xaudio2/SDL_xaudio2.c index b28169d12..de0e9a351 100644 --- a/src/audio/xaudio2/SDL_xaudio2.c +++ b/src/audio/xaudio2/SDL_xaudio2.c @@ -27,6 +27,8 @@ #define INITGUID 1 #include "SDL_xaudio2.h" +#if SDL_HAVE_XAUDIO2_H + static __inline__ char * utf16_to_utf8(const WCHAR *S) { @@ -370,9 +372,15 @@ XAUDIO2_Deinitialize(void) WIN_CoUninitialize(); } +#endif /* SDL_HAVE_XAUDIO2_H */ + + static int XAUDIO2_Init(SDL_AudioDriverImpl * impl) { +#if !SDL_HAVE_XAUDIO2_H + return 0; /* no XAudio2 support, ever. Update your SDK! */ +#else /* XAudio2Create() is a macro that uses COM; we don't load the .dll */ IXAudio2 *ixa2 = NULL; if (FAILED(WIN_CoInitialize())) { @@ -398,6 +406,7 @@ XAUDIO2_Init(SDL_AudioDriverImpl * impl) impl->Deinitialize = XAUDIO2_Deinitialize; return 1; /* this audio target is available. */ +#endif } AudioBootStrap XAUDIO2_bootstrap = { diff --git a/src/audio/xaudio2/SDL_xaudio2.h b/src/audio/xaudio2/SDL_xaudio2.h index 1cf5fc86c..e0e20ebe6 100644 --- a/src/audio/xaudio2/SDL_xaudio2.h +++ b/src/audio/xaudio2/SDL_xaudio2.h @@ -25,6 +25,15 @@ #include "../SDL_sysaudio.h" +/* XAudio2 is available as of the March 2008 DirectX SDK */ +#include +#if (defined(_DXSDK_BUILD_MAJOR) && (_DXSDK_BUILD_MAJOR >= 1284)) +# define SDL_HAVE_XAUDIO2_H 1 +#else +# define SDL_HAVE_XAUDIO2_H 0 +#endif + +#if SDL_HAVE_XAUDIO2_H #include /* Hidden "this" pointer for the audio functions */ @@ -40,6 +49,7 @@ struct SDL_PrivateAudioData int mixlen; Uint8 *nextbuf; }; +#endif #endif /* _SDL_xaudio2_h */