dmime: Return DMUS_E_AUDIOPATH_INACTIVE when audio paths are not enabled.

This commit is contained in:
Rémi Bernon 2023-09-25 19:08:34 +02:00 committed by Alexandre Julliard
parent 0fb4e5ec47
commit 9e0487c4cc

View file

@ -1096,45 +1096,41 @@ static HRESULT WINAPI performance_ClonePMsg(IDirectMusicPerformance8 *iface, DMU
} }
static HRESULT WINAPI performance_CreateAudioPath(IDirectMusicPerformance8 *iface, static HRESULT WINAPI performance_CreateAudioPath(IDirectMusicPerformance8 *iface,
IUnknown *pSourceConfig, BOOL fActivate, IDirectMusicAudioPath **ppNewPath) IUnknown *pSourceConfig, BOOL fActivate, IDirectMusicAudioPath **ret_iface)
{ {
struct performance *This = impl_from_IDirectMusicPerformance8(iface); struct performance *This = impl_from_IDirectMusicPerformance8(iface);
IDirectMusicAudioPath *pPath; IDirectMusicAudioPath *pPath;
FIXME("(%p, %p, %d, %p): stub\n", This, pSourceConfig, fActivate, ppNewPath); FIXME("(%p, %p, %d, %p): stub\n", This, pSourceConfig, fActivate, ret_iface);
if (NULL == ppNewPath) { if (!ret_iface) return E_POINTER;
return E_POINTER; if (!This->audio_paths_enabled) return DMUS_E_AUDIOPATH_INACTIVE;
}
create_dmaudiopath(&IID_IDirectMusicAudioPath, (void**)&pPath); create_dmaudiopath(&IID_IDirectMusicAudioPath, (void **)&pPath);
set_audiopath_perf_pointer(pPath, iface); set_audiopath_perf_pointer(pPath, iface);
/** TODO */ /** TODO */
*ret_iface = pPath;
*ppNewPath = pPath; return IDirectMusicAudioPath_Activate(*ret_iface, fActivate);
return IDirectMusicAudioPath_Activate(*ppNewPath, fActivate);
} }
static HRESULT WINAPI performance_CreateStandardAudioPath(IDirectMusicPerformance8 *iface, static HRESULT WINAPI performance_CreateStandardAudioPath(IDirectMusicPerformance8 *iface,
DWORD dwType, DWORD pchannel_count, BOOL fActivate, IDirectMusicAudioPath **ppNewPath) DWORD dwType, DWORD pchannel_count, BOOL fActivate, IDirectMusicAudioPath **ret_iface)
{ {
struct performance *This = impl_from_IDirectMusicPerformance8(iface); struct performance *This = impl_from_IDirectMusicPerformance8(iface);
IDirectMusicAudioPath *pPath; IDirectMusicAudioPath *pPath;
DSBUFFERDESC desc; DSBUFFERDESC desc;
WAVEFORMATEX format; WAVEFORMATEX format;
DMUS_PORTPARAMS params = {0}; DMUS_PORTPARAMS params = {0};
IDirectSoundBuffer *buffer, *primary_buffer; IDirectSoundBuffer *buffer, *primary_buffer;
HRESULT hr = S_OK; HRESULT hr = S_OK;
FIXME("(%p)->(%ld, %ld, %d, %p): semi-stub\n", This, dwType, pchannel_count, fActivate, ppNewPath); FIXME("(%p)->(%ld, %ld, %d, %p): semi-stub\n", This, dwType, pchannel_count, fActivate, ret_iface);
if (NULL == ppNewPath) { if (!ret_iface) return E_POINTER;
return E_POINTER; if (!This->audio_paths_enabled) return DMUS_E_AUDIOPATH_INACTIVE;
}
*ppNewPath = NULL; *ret_iface = NULL;
/* Secondary buffer description */ /* Secondary buffer description */
memset(&format, 0, sizeof(format)); memset(&format, 0, sizeof(format));
@ -1204,46 +1200,42 @@ static HRESULT WINAPI performance_CreateStandardAudioPath(IDirectMusicPerformanc
set_audiopath_dsound_buffer(pPath, buffer); set_audiopath_dsound_buffer(pPath, buffer);
set_audiopath_primary_dsound_buffer(pPath, primary_buffer); set_audiopath_primary_dsound_buffer(pPath, primary_buffer);
*ppNewPath = pPath; *ret_iface = pPath;
TRACE(" returning IDirectMusicAudioPath interface at %p.\n", *ret_iface);
TRACE(" returning IDirectMusicAudioPath interface at %p.\n", *ppNewPath); return IDirectMusicAudioPath_Activate(*ret_iface, fActivate);
return IDirectMusicAudioPath_Activate(*ppNewPath, fActivate);
} }
static HRESULT WINAPI performance_SetDefaultAudioPath(IDirectMusicPerformance8 *iface, IDirectMusicAudioPath *pAudioPath) static HRESULT WINAPI performance_SetDefaultAudioPath(IDirectMusicPerformance8 *iface, IDirectMusicAudioPath *audio_path)
{ {
struct performance *This = impl_from_IDirectMusicPerformance8(iface); struct performance *This = impl_from_IDirectMusicPerformance8(iface);
FIXME("(%p, %p): semi-stub\n", This, pAudioPath); FIXME("(%p, %p): semi-stub\n", This, audio_path);
if (This->pDefaultPath) { if (!This->audio_paths_enabled) return DMUS_E_AUDIOPATH_INACTIVE;
IDirectMusicAudioPath_Release(This->pDefaultPath);
This->pDefaultPath = NULL;
}
This->pDefaultPath = pAudioPath;
if (This->pDefaultPath) {
IDirectMusicAudioPath_AddRef(This->pDefaultPath);
set_audiopath_perf_pointer(This->pDefaultPath, iface);
}
return S_OK; if (This->pDefaultPath) IDirectMusicAudioPath_Release(This->pDefaultPath);
if ((This->pDefaultPath = audio_path))
{
IDirectMusicAudioPath_AddRef(This->pDefaultPath);
set_audiopath_perf_pointer(This->pDefaultPath, iface);
}
return S_OK;
} }
static HRESULT WINAPI performance_GetDefaultAudioPath(IDirectMusicPerformance8 *iface, static HRESULT WINAPI performance_GetDefaultAudioPath(IDirectMusicPerformance8 *iface,
IDirectMusicAudioPath **ppAudioPath) IDirectMusicAudioPath **ret_iface)
{ {
struct performance *This = impl_from_IDirectMusicPerformance8(iface); struct performance *This = impl_from_IDirectMusicPerformance8(iface);
FIXME("(%p, %p): semi-stub (%p)\n", This, ppAudioPath, This->pDefaultPath); FIXME("(%p, %p): semi-stub (%p)\n", This, ret_iface, This->pDefaultPath);
if (NULL != This->pDefaultPath) { if (!ret_iface) return E_POINTER;
*ppAudioPath = This->pDefaultPath; if (!This->audio_paths_enabled) return DMUS_E_AUDIOPATH_INACTIVE;
IDirectMusicAudioPath_AddRef(*ppAudioPath);
} else { if ((*ret_iface = This->pDefaultPath)) IDirectMusicAudioPath_AddRef(*ret_iface);
*ppAudioPath = NULL;
} return S_OK;
return S_OK;
} }
static HRESULT WINAPI performance_GetParamEx(IDirectMusicPerformance8 *iface, REFGUID rguidType, DWORD dwTrackID, static HRESULT WINAPI performance_GetParamEx(IDirectMusicPerformance8 *iface, REFGUID rguidType, DWORD dwTrackID,