[PATCH 1/5] xapofx1_5: Use shared source

Andrew Eikum aeikum at codeweavers.com
Thu Jan 14 08:09:55 CST 2016


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
---
 dlls/xapofx1_5/Makefile.in        |  4 ++-
 dlls/xapofx1_5/main.c             | 59 ---------------------------------------
 dlls/xaudio2_7/xapofx.c           | 58 ++++++++++++++++++++++++++++++++++++++
 dlls/xaudio2_7/xaudio_classes.idl | 14 ----------
 dlls/xaudio2_7/xaudio_dll.c       |  7 +----
 include/xapofx.h                  |  4 ---
 6 files changed, 62 insertions(+), 84 deletions(-)
 delete mode 100644 dlls/xapofx1_5/main.c

diff --git a/dlls/xapofx1_5/Makefile.in b/dlls/xapofx1_5/Makefile.in
index d243802..5055a16 100644
--- a/dlls/xapofx1_5/Makefile.in
+++ b/dlls/xapofx1_5/Makefile.in
@@ -1,5 +1,7 @@
+EXTRADEFS = -DXAPOFX1_VER=5 -DXAUDIO2_VER=7
 MODULE    = xapofx1_5.dll
 IMPORTS   = ole32
+PARENTSRC = ../xaudio2_7
 
 C_SRCS = \
-	main.c
+	xapofx.c
diff --git a/dlls/xapofx1_5/main.c b/dlls/xapofx1_5/main.c
deleted file mode 100644
index 64d9475..0000000
--- a/dlls/xapofx1_5/main.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2015 Austin English
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "config.h"
-#include <stdarg.h>
-
-#include "initguid.h"
-#include "windef.h"
-#include "winbase.h"
-#include "compobj.h"
-#include "xapofx.h"
-#include "wine/debug.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(xaudio2);
-
-BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)
-{
-    switch (reason)
-    {
-        case DLL_WINE_PREATTACH:
-            return FALSE;    /* prefer native version */
-        case DLL_PROCESS_ATTACH:
-            DisableThreadLibraryCalls(instance);
-            break;
-    }
-
-    return TRUE;
-}
-
-HRESULT CDECL CreateFX(REFCLSID clsid, IUnknown **out)
-{
-    const GUID *class = clsid;
-
-    TRACE("%s %p\n", debugstr_guid(clsid), out);
-
-    if(IsEqualGUID(clsid, &CLSID_FXReverb27) ||
-            IsEqualGUID(clsid, &CLSID_FXReverb))
-        class = &CLSID_WINE_FXReverb15;
-    else if(IsEqualGUID(clsid, &CLSID_FXEQ27) ||
-            IsEqualGUID(clsid, &CLSID_FXEQ))
-        class = &CLSID_WINE_FXEQ15;
-
-    return CoCreateInstance(class, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)out);
-}
diff --git a/dlls/xaudio2_7/xapofx.c b/dlls/xaudio2_7/xapofx.c
index e3c9fc9..9b9a077 100644
--- a/dlls/xaudio2_7/xapofx.c
+++ b/dlls/xaudio2_7/xapofx.c
@@ -23,6 +23,7 @@
 #define NONAMELESSUNION
 #define COBJMACROS
 
+#include "initguid.h"
 #include "xaudio_private.h"
 #include "xapofx.h"
 
@@ -30,6 +31,23 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(xaudio2);
 
+#ifdef XAPOFX1_VER
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD reason, void *pReserved)
+{
+    TRACE("(%p, %d, %p)\n", hinstDLL, reason, pReserved);
+
+    switch (reason)
+    {
+    case DLL_WINE_PREATTACH:
+        return FALSE;  /* prefer native version */
+    case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls( hinstDLL );
+        break;
+    }
+    return TRUE;
+}
+#endif /* XAPOFX1_VER */
+
 typedef struct _VUMeterImpl {
     IXAPO IXAPO_iface;
     IXAPOParameters IXAPOParameters_iface;
@@ -860,3 +878,43 @@ HRESULT CDECL CreateFX(REFCLSID clsid, IUnknown **out, void *initdata, UINT32 in
     return S_OK;
 }
 #endif /* XAUDIO2_VER >= 8 */
+
+#ifdef XAPOFX1_VER
+HRESULT CDECL CreateFX(REFCLSID clsid, IUnknown **out)
+{
+    HRESULT hr;
+    IUnknown *obj;
+    const GUID *class = NULL;
+    IClassFactory *cf;
+
+    TRACE("%s %p\n", debugstr_guid(clsid), out);
+
+    *out = NULL;
+
+    if(IsEqualGUID(clsid, &CLSID_FXReverb27) ||
+            IsEqualGUID(clsid, &CLSID_FXReverb))
+        class = &CLSID_AudioReverb27;
+    else if(IsEqualGUID(clsid, &CLSID_FXEQ27) ||
+            IsEqualGUID(clsid, &CLSID_FXEQ))
+        class = &CLSID_FXEQ;
+
+    if(class){
+        cf = make_xapo_factory(class, 20 + XAUDIO2_VER);
+
+        hr = IClassFactory_CreateInstance(cf, NULL, &IID_IUnknown, (void**)&obj);
+        IClassFactory_Release(cf);
+        if(FAILED(hr))
+            return hr;
+    }else{
+        hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void**)&obj);
+        if(FAILED(hr)){
+            WARN("CoCreateInstance failed: %08x\n", hr);
+            return hr;
+        }
+    }
+
+    *out = obj;
+
+    return S_OK;
+}
+#endif /* XAPOFX1_VER */
diff --git a/dlls/xaudio2_7/xaudio_classes.idl b/dlls/xaudio2_7/xaudio_classes.idl
index 28c8667..a4ad4ab 100644
--- a/dlls/xaudio2_7/xaudio_classes.idl
+++ b/dlls/xaudio2_7/xaudio_classes.idl
@@ -78,13 +78,6 @@ coclass FXReverb13 { interface IXAPO; }
 coclass FXReverb14 { interface IXAPO; }
 
 [
-    helpstring("XAPOFX1.5 FXReverb Class (Wine)"),
-    threading(both),
-    uuid(a90bc001-e897-e897-7439-43FF02000105)
-]
-coclass FXReverb15 { interface IXAPO; }
-
-[
     helpstring("XAPOFX1.1 FXEQ Class (Wine)"),
     threading(both),
     uuid(a90bc001-e897-e897-7439-43FF00000101)
@@ -111,13 +104,6 @@ coclass FXEQ13 { interface IXAPO; }
     uuid(a90bc001-e897-e897-7439-43FF00000104)
 ]
 coclass FXEQ14 { interface IXAPO; }
-
-[
-    helpstring("XAPOFX1.5 FXEQ Class (Wine)"),
-    threading(both),
-    uuid(a90bc001-e897-e897-7439-43FF00000105)
-]
-coclass FXEQ15 { interface IXAPO; }
 #endif /* XAUDIO2_VER == 7 */
 
 #if XAUDIO2_VER == 6
diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c
index 2737b44..0c492f7 100644
--- a/dlls/xaudio2_7/xaudio_dll.c
+++ b/dlls/xaudio2_7/xaudio_dll.c
@@ -22,8 +22,6 @@
 #define NONAMELESSUNION
 #define COBJMACROS
 
-#include "initguid.h"
-
 #include "xaudio_private.h"
 
 #include "ole2.h"
@@ -2070,8 +2068,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
             IsEqualGUID(rclsid, &CLSID_WINE_FXReverb14)){
         factory = make_xapo_factory(&CLSID_AudioReverb27, 26);
 
-    }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb27) ||
-            IsEqualGUID(rclsid, &CLSID_WINE_FXReverb15)){
+    }else if(IsEqualGUID(rclsid, &CLSID_AudioReverb27)){
         factory = make_xapo_factory(&CLSID_AudioReverb27, 27);
 
     }else if(IsEqualGUID(rclsid, &CLSID_WINE_FXEQ10)){
@@ -2084,8 +2081,6 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, void **ppv)
         factory = make_xapo_factory(&CLSID_FXEQ, 24);
     }else if(IsEqualGUID(rclsid, &CLSID_WINE_FXEQ14)){
         factory = make_xapo_factory(&CLSID_FXEQ, 26);
-    }else if(IsEqualGUID(rclsid, &CLSID_WINE_FXEQ15)){
-        factory = make_xapo_factory(&CLSID_FXEQ, 27);
     }
 
     if(!factory) return CLASS_E_CLASSNOTAVAILABLE;
diff --git a/include/xapofx.h b/include/xapofx.h
index 5010375..d7e1841 100644
--- a/include/xapofx.h
+++ b/include/xapofx.h
@@ -31,7 +31,6 @@ DEFINE_GUID(CLSID_WINE_FXEQ11, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xF
 DEFINE_GUID(CLSID_WINE_FXEQ12, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x02);
 DEFINE_GUID(CLSID_WINE_FXEQ13, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x03);
 DEFINE_GUID(CLSID_WINE_FXEQ14, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x04);
-DEFINE_GUID(CLSID_WINE_FXEQ15, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x00, 0x00, 0x01, 0x05);
 
 /* xapofx 1.0 through 1.5 */
 DEFINE_GUID(CLSID_FXMasteringLimiter27, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0x55, 0x00, 0x00, 0x00, 0x01);
@@ -43,7 +42,6 @@ DEFINE_GUID(CLSID_WINE_FXMasteringLimiter11, 0xa90bc001, 0xe897, 0xe897, 0x74, 0
 DEFINE_GUID(CLSID_WINE_FXMasteringLimiter12, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x02);
 DEFINE_GUID(CLSID_WINE_FXMasteringLimiter13, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x03);
 DEFINE_GUID(CLSID_WINE_FXMasteringLimiter14, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x04);
-DEFINE_GUID(CLSID_WINE_FXMasteringLimiter15, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x01, 0x00, 0x01, 0x05);
 
 /* xapofx 1.0 through 1.5 */
 DEFINE_GUID(CLSID_FXReverb27, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0x55, 0x00, 0x00, 0x00, 0x02);
@@ -55,7 +53,6 @@ DEFINE_GUID(CLSID_WINE_FXReverb11, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43,
 DEFINE_GUID(CLSID_WINE_FXReverb12, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x02);
 DEFINE_GUID(CLSID_WINE_FXReverb13, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x03);
 DEFINE_GUID(CLSID_WINE_FXReverb14, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x04);
-DEFINE_GUID(CLSID_WINE_FXReverb15, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x02, 0x00, 0x01, 0x05);
 
 /* xapofx 1.0 through 1.5 */
 DEFINE_GUID(CLSID_FXEcho27, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0x55, 0x00, 0x00, 0x00, 0x03);
@@ -67,6 +64,5 @@ DEFINE_GUID(CLSID_WINE_FXEcho11, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0
 DEFINE_GUID(CLSID_WINE_FXEcho12, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x02);
 DEFINE_GUID(CLSID_WINE_FXEcho13, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x03);
 DEFINE_GUID(CLSID_WINE_FXEcho14, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x04);
-DEFINE_GUID(CLSID_WINE_FXEcho15, 0xa90bc001, 0xe897, 0xe897, 0x74, 0x39, 0x43, 0xFF, 0x03, 0x00, 0x01, 0x05);
 
 #endif
-- 
2.7.0





More information about the wine-patches mailing list