Zebediah Figura : quartz/avidec: Use the strmbase_passthrough object directly.
Module: wine Branch: master Commit: dd3fe639e34ddbd9ad3d74d360df3d6394785155 URL: https://source.winehq.org/git/wine.git/?a=commit;h=dd3fe639e34ddbd9ad3d74d36... Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Sat Mar 28 12:02:03 2020 -0500 quartz/avidec: Use the strmbase_passthrough object directly. Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/quartz/avidec.c | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/dlls/quartz/avidec.c b/dlls/quartz/avidec.c index 9756667906..8d38b89e99 100644 --- a/dlls/quartz/avidec.c +++ b/dlls/quartz/avidec.c @@ -43,7 +43,7 @@ typedef struct AVIDecImpl struct strmbase_source source; IQualityControl source_IQualityControl_iface; - IUnknown *seeking; + struct strmbase_passthrough passthrough; struct strmbase_sink sink; @@ -300,7 +300,7 @@ static HRESULT avi_decompressor_source_query_interface(struct strmbase_pin *ifac if (IsEqualGUID(iid, &IID_IQualityControl)) *out = &filter->source_IQualityControl_iface; else if (IsEqualGUID(iid, &IID_IMediaSeeking)) - return IUnknown_QueryInterface(filter->seeking, iid, out); + *out = &filter->passthrough.IMediaSeeking_iface; else return E_NOINTERFACE; @@ -548,10 +548,10 @@ static void avi_decompressor_destroy(struct strmbase_filter *iface) strmbase_sink_cleanup(&filter->sink); strmbase_source_cleanup(&filter->source); + strmbase_passthrough_cleanup(&filter->passthrough); filter->stream_cs.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&filter->stream_cs); - IUnknown_Release(filter->seeking); strmbase_filter_cleanup(&filter->filter); free(filter); @@ -603,8 +603,6 @@ static const struct strmbase_filter_ops filter_ops = HRESULT avi_dec_create(IUnknown *outer, IUnknown **out) { AVIDecImpl *object; - ISeekingPassThru *passthrough; - HRESULT hr; if (!(object = calloc(1, sizeof(*object)))) return E_OUTOFMEMORY; @@ -618,21 +616,9 @@ HRESULT avi_dec_create(IUnknown *outer, IUnknown **out) strmbase_source_init(&object->source, &object->filter, L"Out", &source_ops); object->source_IQualityControl_iface.lpVtbl = &source_qc_vtbl; - - if (FAILED(hr = CoCreateInstance(&CLSID_SeekingPassThru, - (IUnknown *)&object->source.pin.IPin_iface, CLSCTX_INPROC_SERVER, - &IID_IUnknown, (void **)&object->seeking))) - { - strmbase_sink_cleanup(&object->sink); - strmbase_source_cleanup(&object->source); - strmbase_filter_cleanup(&object->filter); - free(object); - return hr; - } - - IUnknown_QueryInterface(object->seeking, &IID_ISeekingPassThru, (void **)&passthrough); - ISeekingPassThru_Init(passthrough, FALSE, &object->sink.pin.IPin_iface); - ISeekingPassThru_Release(passthrough); + strmbase_passthrough_init(&object->passthrough, (IUnknown *)&object->source.pin.IPin_iface); + ISeekingPassThru_Init(&object->passthrough.ISeekingPassThru_iface, FALSE, + &object->sink.pin.IPin_iface); TRACE("Created AVI decompressor %p.\n", object); *out = &object->filter.IUnknown_inner;
participants (1)
-
Alexandre Julliard