Nikolay Sivov : dmsynth: Cleanup IDirectMusicSynth8 creation helper.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jun 25 08:19:40 CDT 2015


Module: wine
Branch: master
Commit: 32924d4ed0e49b74f5d4f6bbe2d63a4837f40117
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=32924d4ed0e49b74f5d4f6bbe2d63a4837f40117

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu Jun 25 12:13:43 2015 +0300

dmsynth: Cleanup IDirectMusicSynth8 creation helper.

---

 dlls/dmsynth/synth.c | 60 +++++++++++++++++++++++++++++-----------------------
 1 file changed, 33 insertions(+), 27 deletions(-)

diff --git a/dlls/dmsynth/synth.c b/dlls/dmsynth/synth.c
index af8a6fd..cdf8026 100644
--- a/dlls/dmsynth/synth.c
+++ b/dlls/dmsynth/synth.c
@@ -575,31 +575,37 @@ static const IKsControlVtbl DMSynthImpl_IKsControl_Vtbl = {
 };
 
 /* for ClassFactory */
-HRESULT WINAPI DMUSIC_CreateDirectMusicSynthImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter)
-{
-	IDirectMusicSynth8Impl *obj;
-	
-	TRACE("(%p,%p,%p)\n", lpcGUID, ppobj, pUnkOuter);
-	obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicSynth8Impl));
-	if (NULL == obj) {
-		*ppobj = NULL;
-		return E_OUTOFMEMORY;
-	}
-	obj->IDirectMusicSynth8_iface.lpVtbl = &DirectMusicSynth8_Vtbl;
-	obj->IKsControl_iface.lpVtbl = &DMSynthImpl_IKsControl_Vtbl;
-	obj->ref = 0;
-	/* fill in caps */
-	obj->pCaps.dwSize = sizeof(DMUS_PORTCAPS);
-	obj->pCaps.dwFlags = DMUS_PC_DLS | DMUS_PC_SOFTWARESYNTH | DMUS_PC_DIRECTSOUND | DMUS_PC_DLS2 | DMUS_PC_AUDIOPATH | DMUS_PC_WAVE;
-	obj->pCaps.guidPort = CLSID_DirectMusicSynth;
-	obj->pCaps.dwClass = DMUS_PC_OUTPUTCLASS;
-	obj->pCaps.dwType = DMUS_PORT_USER_MODE_SYNTH;
-	obj->pCaps.dwMemorySize = DMUS_PC_SYSTEMMEMORY;
-	obj->pCaps.dwMaxChannelGroups = 1000;
-	obj->pCaps.dwMaxVoices = 1000;
-	obj->pCaps.dwMaxAudioChannels = 2;
-	obj->pCaps.dwEffectFlags = DMUS_EFFECT_REVERB;
-	MultiByteToWideChar (CP_ACP, 0, "Microsoft Synthesizer", -1, obj->pCaps.wszDescription, sizeof(obj->pCaps.wszDescription)/sizeof(WCHAR));
-
-	return IDirectMusicSynth8Impl_QueryInterface ((LPDIRECTMUSICSYNTH8)obj, lpcGUID, ppobj);
+HRESULT WINAPI DMUSIC_CreateDirectMusicSynthImpl(REFIID riid, void **ppobj, IUnknown *outer)
+{
+    static const WCHAR descrW[] = {'M','i','c','r','o','s','o','f','t',' ',
+        'S','y','n','t','h','e','s','i','z','e','r',0};
+    IDirectMusicSynth8Impl *obj;
+    HRESULT hr;
+
+    TRACE("(%s, %p, %p)\n", debugstr_guid(riid), ppobj, outer);
+
+    obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*obj));
+    if (NULL == obj) {
+        *ppobj = NULL;
+        return E_OUTOFMEMORY;
+    }
+    obj->IDirectMusicSynth8_iface.lpVtbl = &DirectMusicSynth8_Vtbl;
+    obj->IKsControl_iface.lpVtbl = &DMSynthImpl_IKsControl_Vtbl;
+    obj->ref = 1;
+    /* fill in caps */
+    obj->pCaps.dwSize = sizeof(DMUS_PORTCAPS);
+    obj->pCaps.dwFlags = DMUS_PC_DLS | DMUS_PC_SOFTWARESYNTH | DMUS_PC_DIRECTSOUND | DMUS_PC_DLS2 | DMUS_PC_AUDIOPATH | DMUS_PC_WAVE;
+    obj->pCaps.guidPort = CLSID_DirectMusicSynth;
+    obj->pCaps.dwClass = DMUS_PC_OUTPUTCLASS;
+    obj->pCaps.dwType = DMUS_PORT_USER_MODE_SYNTH;
+    obj->pCaps.dwMemorySize = DMUS_PC_SYSTEMMEMORY;
+    obj->pCaps.dwMaxChannelGroups = 1000;
+    obj->pCaps.dwMaxVoices = 1000;
+    obj->pCaps.dwMaxAudioChannels = 2;
+    obj->pCaps.dwEffectFlags = DMUS_EFFECT_REVERB;
+    strcpyW(obj->pCaps.wszDescription, descrW);
+
+    hr = IDirectMusicSynth8_QueryInterface(&obj->IDirectMusicSynth8_iface, riid, ppobj);
+    IDirectMusicSynth8_Release(&obj->IDirectMusicSynth8_iface);
+    return hr;
 }




More information about the wine-cvs mailing list