Michael Stefaniuc : dmime: Do not use Init() from InitAudio().
Alexandre Julliard
julliard at winehq.org
Thu May 11 15:07:29 CDT 2017
Module: wine
Branch: master
Commit: 26011d2d3e3c0d616ef8c738c7941bffcb919396
URL: http://source.winehq.org/git/wine.git/?a=commit;h=26011d2d3e3c0d616ef8c738c7941bffcb919396
Author: Michael Stefaniuc <mstefani at winehq.org>
Date: Thu May 11 11:05:48 2017 +0200
dmime: Do not use Init() from InitAudio().
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dmime/performance.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c
index 292ae80..2bd34d5 100644
--- a/dlls/dmime/performance.c
+++ b/dlls/dmime/performance.c
@@ -892,17 +892,30 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_RhythmToTime(IDirectMusicPerf
/* IDirectMusicPerformance8 Interface part follow: */
static HRESULT WINAPI IDirectMusicPerformance8Impl_InitAudio(IDirectMusicPerformance8 *iface,
- IDirectMusic **ppDirectMusic, IDirectSound **dsound, HWND hwnd,
+ IDirectMusic **dmusic, IDirectSound **dsound, HWND hwnd,
DWORD dwDefaultPathType, DWORD dwPChannelCount, DWORD dwFlags, DMUS_AUDIOPARAMS* pParams)
{
IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
HRESULT hr = S_OK;
- TRACE("(%p, %p, %p, %p, %x, %u, %x, %p)\n", This, ppDirectMusic, dsound, hwnd, dwDefaultPathType, dwPChannelCount, dwFlags, pParams);
+ TRACE("(%p, %p, %p, %p, %x, %u, %x, %p)\n", This, dmusic, dsound, hwnd, dwDefaultPathType,
+ dwPChannelCount, dwFlags, pParams);
if (This->dmusic)
return DMUS_E_ALREADY_INITED;
+ if (!dmusic || !*dmusic) {
+ hr = CoCreateInstance(&CLSID_DirectMusic, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusic8,
+ (void **)&This->dmusic);
+ if (FAILED(hr))
+ return hr;
+ if (dmusic)
+ *dmusic = (IDirectMusic *)This->dmusic;
+ } else
+ This->dmusic = (IDirectMusic8 *)*dmusic;
+ if (dmusic)
+ IDirectMusic8_AddRef(This->dmusic);
+
if (!dsound || !*dsound) {
hr = DirectSoundCreate8(NULL, (IDirectSound8 **)&This->dsound, NULL);
if (FAILED(hr))
@@ -913,12 +926,8 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_InitAudio(IDirectMusicPerform
*dsound = This->dsound;
} else
This->dsound = *dsound;
-
- IDirectMusicPerformance8_Init(iface, ppDirectMusic, This->dsound, hwnd);
-
- /* Init increases the ref count of the dsound object. Decrement it if the app doesn't want a pointer to the object. */
- if (!dsound)
- IDirectSound_Release(This->dsound);
+ if (dsound)
+ IDirectSound_AddRef(This->dsound);
/* as seen in msdn we need params init before audio path creation */
if (NULL != pParams) {
More information about the wine-cvs
mailing list