Ethan Lee : xaudio2: Use new features from FAudio 19.06 ( but keep compatibility for <=19.05).

Alexandre Julliard julliard at winehq.org
Thu May 23 16:04:39 CDT 2019


Module: wine
Branch: master
Commit: d341efeff071532801fdc224062eb9e60dc5aea0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=d341efeff071532801fdc224062eb9e60dc5aea0

Author: Ethan Lee <elee at codeweavers.com>
Date:   Thu May 23 13:01:31 2019 -0400

xaudio2: Use new features from FAudio 19.06 (but keep compatibility for <=19.05).

Signed-off-by: Ethan Lee <elee at codeweavers.com>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 configure                   | 17 +++++++++++++++++
 configure.ac                |  4 ++++
 dlls/xaudio2_7/x3daudio.c   |  6 ++++++
 dlls/xaudio2_7/xaudio_dll.c |  6 +++++-
 include/config.h.in         |  6 ++++++
 5 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index c206e8d..2ad2639 100755
--- a/configure
+++ b/configure
@@ -14966,6 +14966,23 @@ CPPFLAGS=$ac_save_CPPFLAGS
 test -z "$FAUDIO_CFLAGS" || FAUDIO_CFLAGS=`echo " $FAUDIO_CFLAGS" | sed 's/ -I\([^/]\)/ -I\$(top_builddir)\/\1/g'`
 test -z "$FAUDIO_LIBS" || FAUDIO_LIBS=`echo " $FAUDIO_LIBS" | sed 's/ -L\([^/]\)/ -L\$(top_builddir)\/\1/g'`
 
+    ac_wine_check_funcs_save_LIBS="$LIBS"
+LIBS="$LIBS $FAUDIO_LIBS"
+for ac_func in \
+        FAudio_CommitOperationSet \
+        F3DAudioInitialize8
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+LIBS="$ac_wine_check_funcs_save_LIBS"
 fi
 if test "x$ac_cv_lib_soname_FAudio" = "x"; then :
   case "x$with_faudio" in
diff --git a/configure.ac b/configure.ac
index 83a8181..f548e3e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1690,6 +1690,10 @@ then
     WINE_PACKAGE_FLAGS(FAUDIO,[faudio],[-lFAudio],,,
         [AC_CHECK_HEADERS([FAudio.h],
             [WINE_CHECK_SONAME(FAudio,FAudioCreate,,,[$FAUDIO_LIBS],[[libFAudio*]])])])
+    WINE_CHECK_LIB_FUNCS(\
+        FAudio_CommitOperationSet \
+        F3DAudioInitialize8,
+        [$FAUDIO_LIBS])
 fi
 WINE_NOTICE_WITH(faudio,[test "x$ac_cv_lib_soname_FAudio" = "x"],
                  [libFAudio ${notice_platform}development files not found, XAudio2 won't be supported.])
diff --git a/dlls/xaudio2_7/x3daudio.c b/dlls/xaudio2_7/x3daudio.c
index ee3367e..5bc7c84 100644
--- a/dlls/xaudio2_7/x3daudio.c
+++ b/dlls/xaudio2_7/x3daudio.c
@@ -17,6 +17,8 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 
+#include "config.h"
+
 #include <stdarg.h>
 
 #include "windef.h"
@@ -51,8 +53,12 @@ HRESULT CDECL X3DAudioInitialize(UINT32 chanmask, float speedofsound,
         X3DAUDIO_HANDLE handle)
 {
     TRACE("0x%x, %f, %p\n", chanmask, speedofsound, handle);
+#ifdef HAVE_F3DAUDIOINITIALIZE8
+    return F3DAudioInitialize8(chanmask, speedofsound, handle);
+#else
     F3DAudioInitialize(chanmask, speedofsound, handle);
     return S_OK;
+#endif
 }
 #endif /* XAUDIO2_VER >= 8 */
 
diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c
index 70ba243..f135642 100644
--- a/dlls/xaudio2_7/xaudio_dll.c
+++ b/dlls/xaudio2_7/xaudio_dll.c
@@ -1797,9 +1797,13 @@ static HRESULT WINAPI IXAudio2Impl_CommitChanges(IXAudio2 *iface,
 {
     IXAudio2Impl *This = impl_from_IXAudio2(iface);
 
-    TRACE("(%p)->(0x%x): stub!\n", This, operationSet);
+    TRACE("(%p)->(0x%x)\n", This, operationSet);
 
+#ifdef HAVE_FAUDIO_COMMITOPERATIONSET
+    return FAudio_CommitOperationSet(This->faudio, operationSet);
+#else
     return FAudio_CommitChanges(This->faudio);
+#endif
 }
 
 static void WINAPI IXAudio2Impl_GetPerformanceData(IXAudio2 *iface,
diff --git a/include/config.h.in b/include/config.h.in
index 774e9ee..ce5c157 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -146,9 +146,15 @@
 /* Define to 1 if you have the `expm1f' function. */
 #undef HAVE_EXPM1F
 
+/* Define to 1 if you have the `F3DAudioInitialize8' function. */
+#undef HAVE_F3DAUDIOINITIALIZE8
+
 /* Define to 1 if you have the `fallocate' function. */
 #undef HAVE_FALLOCATE
 
+/* Define to 1 if you have the `FAudio_CommitOperationSet' function. */
+#undef HAVE_FAUDIO_COMMITOPERATIONSET
+
 /* Define to 1 if you have the <FAudio.h> header file. */
 #undef HAVE_FAUDIO_H
 




More information about the wine-cvs mailing list