Zebediah Figura : quartz/dsoundrender: Use the type info cache for IBasicAudio.
Alexandre Julliard
julliard at winehq.org
Mon Jun 10 13:43:54 CDT 2019
Module: wine
Branch: master
Commit: 1eee28e219e3e2d7a7dc4222922d6fbb2bc49da3
URL: https://source.winehq.org/git/wine.git/?a=commit;h=1eee28e219e3e2d7a7dc4222922d6fbb2bc49da3
Author: Zebediah Figura <z.figura12 at gmail.com>
Date: Thu Jun 6 19:49:24 2019 -0400
quartz/dsoundrender: Use the type info cache for IBasicAudio.
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/quartz/dsoundrender.c | 66 +++++++++++++++++++++++++++++++++++++++-------
1 file changed, 56 insertions(+), 10 deletions(-)
diff --git a/dlls/quartz/dsoundrender.c b/dlls/quartz/dsoundrender.c
index 1545209..49de73f 100644
--- a/dlls/quartz/dsoundrender.c
+++ b/dlls/quartz/dsoundrender.c
@@ -51,8 +51,8 @@ static const IAMDirectSoundVtbl IAMDirectSound_Vtbl;
typedef struct DSoundRenderImpl
{
BaseRenderer renderer;
- BasicAudio basicAudio;
+ IBasicAudio IBasicAudio_iface;
IReferenceClock IReferenceClock_iface;
IAMDirectSound IAMDirectSound_iface;
@@ -85,7 +85,7 @@ static inline DSoundRenderImpl *impl_from_IBaseFilter(IBaseFilter *iface)
static inline DSoundRenderImpl *impl_from_IBasicAudio(IBasicAudio *iface)
{
- return CONTAINING_RECORD(iface, DSoundRenderImpl, basicAudio.IBasicAudio_iface);
+ return CONTAINING_RECORD(iface, DSoundRenderImpl, IBasicAudio_iface);
}
static inline DSoundRenderImpl *impl_from_IReferenceClock(IReferenceClock *iface)
@@ -604,7 +604,6 @@ static void dsound_render_destroy(BaseRenderer *iface)
IDirectSound8_Release(filter->dsound);
filter->dsound = NULL;
- BasicAudio_Destroy(&filter->basicAudio);
CloseHandle(filter->blocked);
strmbase_renderer_cleanup(&filter->renderer);
@@ -616,7 +615,7 @@ static HRESULT dsound_render_query_interface(BaseRenderer *iface, REFIID iid, vo
DSoundRenderImpl *filter = impl_from_BaseRenderer(iface);
if (IsEqualGUID(iid, &IID_IBasicAudio))
- *out = &filter->basicAudio.IBasicAudio_iface;
+ *out = &filter->IBasicAudio_iface;
else if (IsEqualGUID(iid, &IID_IReferenceClock))
*out = &filter->IReferenceClock_iface;
else if (IsEqualGUID(iid, &IID_IAMDirectSound))
@@ -670,7 +669,7 @@ HRESULT DSoundRender_create(IUnknown *outer, void **out)
outer, &CLSID_DSoundRender, sink_name,
(DWORD_PTR)(__FILE__ ": DSoundRenderImpl.csFilter"), &BaseFuncTable);
- BasicAudio_Init(&pDSoundRender->basicAudio,&IBasicAudio_Vtbl);
+ pDSoundRender->IBasicAudio_iface.lpVtbl = &IBasicAudio_Vtbl;
pDSoundRender->IReferenceClock_iface.lpVtbl = &IReferenceClock_Vtbl;
pDSoundRender->IAMDirectSound_iface.lpVtbl = &IAMDirectSound_Vtbl;
@@ -793,7 +792,54 @@ static ULONG WINAPI Basicaudio_Release(IBasicAudio *iface) {
return BaseFilterImpl_Release(&This->renderer.filter.IBaseFilter_iface);
}
-/*** IBasicAudio methods ***/
+HRESULT WINAPI basic_audio_GetTypeInfoCount(IBasicAudio *iface, UINT *count)
+{
+ TRACE("iface %p, count %p.\n", iface, count);
+ *count = 1;
+ return S_OK;
+}
+
+HRESULT WINAPI basic_audio_GetTypeInfo(IBasicAudio *iface, UINT index,
+ LCID lcid, ITypeInfo **typeinfo)
+{
+ TRACE("iface %p, index %u, lcid %#x, typeinfo %p.\n", iface, index, lcid, typeinfo);
+ return strmbase_get_typeinfo(IBasicAudio_tid, typeinfo);
+}
+
+HRESULT WINAPI basic_audio_GetIDsOfNames(IBasicAudio *iface, REFIID iid,
+ LPOLESTR *names, UINT count, LCID lcid, DISPID *ids)
+{
+ ITypeInfo *typeinfo;
+ HRESULT hr;
+
+ TRACE("iface %p, iid %s, names %p, count %u, lcid %#x, ids %p.\n",
+ iface, debugstr_guid(iid), names, count, lcid, ids);
+
+ if (SUCCEEDED(hr = strmbase_get_typeinfo(IBasicAudio_tid, &typeinfo)))
+ {
+ hr = ITypeInfo_GetIDsOfNames(typeinfo, names, count, ids);
+ ITypeInfo_Release(typeinfo);
+ }
+ return hr;
+}
+
+static HRESULT WINAPI basic_audio_Invoke(IBasicAudio *iface, DISPID id, REFIID iid, LCID lcid,
+ WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepinfo, UINT *error_arg)
+{
+ ITypeInfo *typeinfo;
+ HRESULT hr;
+
+ TRACE("iface %p, id %d, iid %s, lcid %#x, flags %#x, params %p, result %p, excepinfo %p, error_arg %p.\n",
+ iface, id, debugstr_guid(iid), lcid, flags, params, result, excepinfo, error_arg);
+
+ if (SUCCEEDED(hr = strmbase_get_typeinfo(IBasicAudio_tid, &typeinfo)))
+ {
+ hr = ITypeInfo_Invoke(typeinfo, iface, id, flags, params, result, excepinfo, error_arg);
+ ITypeInfo_Release(typeinfo);
+ }
+ return hr;
+}
+
static HRESULT WINAPI Basicaudio_put_Volume(IBasicAudio *iface,
LONG lVolume) {
DSoundRenderImpl *This = impl_from_IBasicAudio(iface);
@@ -861,10 +907,10 @@ static const IBasicAudioVtbl IBasicAudio_Vtbl =
Basicaudio_QueryInterface,
Basicaudio_AddRef,
Basicaudio_Release,
- BasicAudioImpl_GetTypeInfoCount,
- BasicAudioImpl_GetTypeInfo,
- BasicAudioImpl_GetIDsOfNames,
- BasicAudioImpl_Invoke,
+ basic_audio_GetTypeInfoCount,
+ basic_audio_GetTypeInfo,
+ basic_audio_GetIDsOfNames,
+ basic_audio_Invoke,
Basicaudio_put_Volume,
Basicaudio_get_Volume,
Basicaudio_put_Balance,
More information about the wine-cvs
mailing list