Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/evr/evr.c | 4 ++-- dlls/qedit/nullrenderer.c | 4 ++-- dlls/quartz/videorenderer.c | 4 ++-- dlls/quartz/vmr9.c | 4 ++-- dlls/strmbase/renderer.c | 6 +++--- include/wine/strmbase.h | 3 +-- 6 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/dlls/evr/evr.c b/dlls/evr/evr.c index ff89d85ac8c..94239417794 100644 --- a/dlls/evr/evr.c +++ b/dlls/evr/evr.c @@ -48,7 +48,7 @@ static void evr_destroy(struct strmbase_renderer *iface) free(filter); }
-static HRESULT WINAPI evr_DoRenderSample(struct strmbase_renderer *iface, IMediaSample *sample) +static HRESULT evr_render(struct strmbase_renderer *iface, IMediaSample *sample) { FIXME("Not implemented.\n"); return E_NOTIMPL; @@ -63,7 +63,7 @@ static HRESULT evr_query_accept(struct strmbase_renderer *iface, const AM_MEDIA_ static const struct strmbase_renderer_ops renderer_ops = { .renderer_query_accept = evr_query_accept, - .pfnDoRenderSample = evr_DoRenderSample, + .renderer_render = evr_render, .renderer_destroy = evr_destroy, };
diff --git a/dlls/qedit/nullrenderer.c b/dlls/qedit/nullrenderer.c index a9319b06efe..5dc74c77809 100644 --- a/dlls/qedit/nullrenderer.c +++ b/dlls/qedit/nullrenderer.c @@ -36,7 +36,7 @@ static struct null_renderer *impl_from_strmbase_renderer(struct strmbase_rendere return CONTAINING_RECORD(iface, struct null_renderer, renderer); }
-static HRESULT WINAPI NullRenderer_DoRenderSample(struct strmbase_renderer *iface, IMediaSample *sample) +static HRESULT null_renderer_render(struct strmbase_renderer *iface, IMediaSample *sample) { return S_OK; } @@ -57,7 +57,7 @@ static void null_renderer_destroy(struct strmbase_renderer *iface) static const struct strmbase_renderer_ops renderer_ops = { .renderer_query_accept = null_renderer_query_accept, - .pfnDoRenderSample = NullRenderer_DoRenderSample, + .renderer_render = null_renderer_render, .renderer_destroy = null_renderer_destroy, };
diff --git a/dlls/quartz/videorenderer.c b/dlls/quartz/videorenderer.c index ec40bc8db9c..1a59a9b5213 100644 --- a/dlls/quartz/videorenderer.c +++ b/dlls/quartz/videorenderer.c @@ -79,7 +79,7 @@ static void VideoRenderer_AutoShowWindow(struct video_renderer *This) ShowWindow(This->window.hwnd, SW_SHOW); }
-static HRESULT WINAPI VideoRenderer_DoRenderSample(struct strmbase_renderer *iface, IMediaSample *pSample) +static HRESULT video_renderer_render(struct strmbase_renderer *iface, IMediaSample *pSample) { struct video_renderer *filter = impl_from_strmbase_renderer(iface); RECT src = filter->window.src, dst = filter->window.dst; @@ -214,7 +214,7 @@ static RECT video_renderer_get_default_rect(struct video_window *iface) static const struct strmbase_renderer_ops renderer_ops = { .renderer_query_accept = video_renderer_query_accept, - .pfnDoRenderSample = VideoRenderer_DoRenderSample, + .renderer_render = video_renderer_render, .renderer_init_stream = video_renderer_init_stream, .renderer_stop_stream = video_renderer_stop_stream, .renderer_destroy = video_renderer_destroy, diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index 9e8a037eca0..f95c2bfbce2 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -206,7 +206,7 @@ static inline struct quartz_vmr *impl_from_IBaseFilter(IBaseFilter *iface) return CONTAINING_RECORD(iface, struct quartz_vmr, renderer.filter.IBaseFilter_iface); }
-static HRESULT WINAPI VMR9_DoRenderSample(struct strmbase_renderer *iface, IMediaSample *sample) +static HRESULT vmr_render(struct strmbase_renderer *iface, IMediaSample *sample) { struct quartz_vmr *filter = impl_from_IBaseFilter(&iface->filter.IBaseFilter_iface); unsigned int data_size, width, depth, src_pitch; @@ -638,7 +638,7 @@ static HRESULT vmr_pin_query_interface(struct strmbase_renderer *iface, REFIID i static const struct strmbase_renderer_ops renderer_ops = { .renderer_query_accept = vmr_query_accept, - .pfnDoRenderSample = VMR9_DoRenderSample, + .renderer_render = vmr_render, .renderer_init_stream = vmr_init_stream, .renderer_start_stream = vmr_start_stream, .renderer_stop_stream = vmr_stop_stream, diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index 7718232e97c..e6adf41add9 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -361,7 +361,7 @@ static HRESULT WINAPI BaseRenderer_Receive(struct strmbase_sink *pin, IMediaSamp
filter->current_sample = sample;
- hr = filter->pFuncsTable->pfnDoRenderSample(filter, sample); + hr = filter->pFuncsTable->renderer_render(filter, sample);
SetEvent(filter->state_event); LeaveCriticalSection(&filter->filter.stream_cs); @@ -401,14 +401,14 @@ static HRESULT WINAPI BaseRenderer_Receive(struct strmbase_sink *pin, IMediaSamp }
if (state == State_Running) - hr = filter->pFuncsTable->pfnDoRenderSample(filter, sample); + hr = filter->pFuncsTable->renderer_render(filter, sample);
perform_qos(filter, start, stop, jitter); } else { if (state == State_Running) - hr = filter->pFuncsTable->pfnDoRenderSample(filter, sample); + hr = filter->pFuncsTable->renderer_render(filter, sample); }
return hr; diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index dbb4a21c071..347482b1eb9 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -305,13 +305,12 @@ struct strmbase_renderer BOOL eos; };
-typedef HRESULT (WINAPI *BaseRenderer_DoRenderSample)(struct strmbase_renderer *iface, IMediaSample *sample); typedef HRESULT (WINAPI *BaseRenderer_BreakConnect) (struct strmbase_renderer *iface);
struct strmbase_renderer_ops { HRESULT (*renderer_query_accept)(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt); - BaseRenderer_DoRenderSample pfnDoRenderSample; + HRESULT (*renderer_render)(struct strmbase_renderer *iface, IMediaSample *sample); void (*renderer_init_stream)(struct strmbase_renderer *iface); void (*renderer_start_stream)(struct strmbase_renderer *iface); void (*renderer_stop_stream)(struct strmbase_renderer *iface);
strmbase provides those guarantees.
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/vmr9.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-)
diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index f95c2bfbce2..b5344207398 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -514,26 +514,21 @@ static HRESULT vmr_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE
static HRESULT WINAPI VMR9_BreakConnect(struct strmbase_renderer *This) { - struct quartz_vmr *pVMR9 = impl_from_IBaseFilter(&This->filter.IBaseFilter_iface); + struct quartz_vmr *filter = impl_from_IBaseFilter(&This->filter.IBaseFilter_iface); HRESULT hr = S_OK; DWORD i;
- if (!pVMR9->mode) + if (!filter->mode) return S_FALSE; - if (This->sink.pin.peer && pVMR9->allocator && pVMR9->presenter) + + if (filter->allocator && filter->presenter) { - if (pVMR9->renderer.filter.state != State_Stopped) - { - ERR("Disconnecting while not stopped! UNTESTED!!\n"); - } - if (pVMR9->renderer.filter.state == State_Running) - hr = IVMRImagePresenter9_StopPresenting(pVMR9->presenter, pVMR9->cookie); - - for (i = 0; i < pVMR9->num_surfaces; ++i) - IDirect3DSurface9_Release(pVMR9->surfaces[i]); - free(pVMR9->surfaces); - IVMRSurfaceAllocator9_TerminateDevice(pVMR9->allocator, pVMR9->cookie); - pVMR9->num_surfaces = 0; + for (i = 0; i < filter->num_surfaces; ++i) + IDirect3DSurface9_Release(filter->surfaces[i]); + free(filter->surfaces); + + IVMRSurfaceAllocator9_TerminateDevice(filter->allocator, filter->cookie); + filter->num_surfaces = 0; } return hr; }
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=86901
Your paranoid android.
=== debiant2 (32 bit Chinese:China report) ===
quartz: filtergraph: Timeout
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/vmr9.c | 4 ++-- dlls/strmbase/renderer.c | 4 ++-- include/wine/strmbase.h | 4 +--- 3 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index b5344207398..6ac01c3b8ae 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -512,7 +512,7 @@ static HRESULT vmr_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE return hr; }
-static HRESULT WINAPI VMR9_BreakConnect(struct strmbase_renderer *This) +static HRESULT vmr_disconnect(struct strmbase_renderer *This) { struct quartz_vmr *filter = impl_from_IBaseFilter(&This->filter.IBaseFilter_iface); HRESULT hr = S_OK; @@ -638,7 +638,7 @@ static const struct strmbase_renderer_ops renderer_ops = .renderer_start_stream = vmr_start_stream, .renderer_stop_stream = vmr_stop_stream, .renderer_connect = vmr_connect, - .pfnBreakConnect = VMR9_BreakConnect, + .renderer_disconnect = vmr_disconnect, .renderer_destroy = vmr_destroy, .renderer_query_interface = vmr_query_interface, .renderer_pin_query_interface = vmr_pin_query_interface, diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index e6adf41add9..47be6e0fd30 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -427,8 +427,8 @@ static void sink_disconnect(struct strmbase_sink *iface) { struct strmbase_renderer *filter = impl_from_IPin(&iface->pin.IPin_iface);
- if (filter->pFuncsTable->pfnBreakConnect) - filter->pFuncsTable->pfnBreakConnect(filter); + if (filter->pFuncsTable->renderer_disconnect) + filter->pFuncsTable->renderer_disconnect(filter); }
static HRESULT sink_eos(struct strmbase_sink *iface) diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index 347482b1eb9..dcb9b1bf3d9 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -305,8 +305,6 @@ struct strmbase_renderer BOOL eos; };
-typedef HRESULT (WINAPI *BaseRenderer_BreakConnect) (struct strmbase_renderer *iface); - struct strmbase_renderer_ops { HRESULT (*renderer_query_accept)(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt); @@ -315,7 +313,7 @@ struct strmbase_renderer_ops void (*renderer_start_stream)(struct strmbase_renderer *iface); void (*renderer_stop_stream)(struct strmbase_renderer *iface); HRESULT (*renderer_connect)(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt); - BaseRenderer_BreakConnect pfnBreakConnect; + HRESULT (*renderer_disconnect)(struct strmbase_renderer *iface); void (*renderer_destroy)(struct strmbase_renderer *iface); HRESULT (*renderer_query_interface)(struct strmbase_renderer *iface, REFIID iid, void **out); HRESULT (*renderer_pin_query_interface)(struct strmbase_renderer *iface, REFIID iid, void **out);
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/quartz/vmr9.c | 9 ++------- include/wine/strmbase.h | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c index 6ac01c3b8ae..2562b74932a 100644 --- a/dlls/quartz/vmr9.c +++ b/dlls/quartz/vmr9.c @@ -512,16 +512,12 @@ static HRESULT vmr_connect(struct strmbase_renderer *iface, const AM_MEDIA_TYPE return hr; }
-static HRESULT vmr_disconnect(struct strmbase_renderer *This) +static void vmr_disconnect(struct strmbase_renderer *This) { struct quartz_vmr *filter = impl_from_IBaseFilter(&This->filter.IBaseFilter_iface); - HRESULT hr = S_OK; DWORD i;
- if (!filter->mode) - return S_FALSE; - - if (filter->allocator && filter->presenter) + if (filter->mode && filter->allocator && filter->presenter) { for (i = 0; i < filter->num_surfaces; ++i) IDirect3DSurface9_Release(filter->surfaces[i]); @@ -530,7 +526,6 @@ static HRESULT vmr_disconnect(struct strmbase_renderer *This) IVMRSurfaceAllocator9_TerminateDevice(filter->allocator, filter->cookie); filter->num_surfaces = 0; } - return hr; }
static void vmr_free(struct quartz_vmr *filter) diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index dcb9b1bf3d9..9906a9ffd74 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -313,7 +313,7 @@ struct strmbase_renderer_ops void (*renderer_start_stream)(struct strmbase_renderer *iface); void (*renderer_stop_stream)(struct strmbase_renderer *iface); HRESULT (*renderer_connect)(struct strmbase_renderer *iface, const AM_MEDIA_TYPE *mt); - HRESULT (*renderer_disconnect)(struct strmbase_renderer *iface); + void (*renderer_disconnect)(struct strmbase_renderer *iface); void (*renderer_destroy)(struct strmbase_renderer *iface); HRESULT (*renderer_query_interface)(struct strmbase_renderer *iface, REFIID iid, void **out); HRESULT (*renderer_pin_query_interface)(struct strmbase_renderer *iface, REFIID iid, void **out);
Signed-off-by: Zebediah Figura z.figura12@gmail.com --- dlls/strmbase/renderer.c | 42 ++++++++++++++++++++-------------------- include/wine/strmbase.h | 2 +- 2 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/dlls/strmbase/renderer.c b/dlls/strmbase/renderer.c index 47be6e0fd30..ee8ff4c623f 100644 --- a/dlls/strmbase/renderer.c +++ b/dlls/strmbase/renderer.c @@ -198,7 +198,7 @@ static struct strmbase_pin *renderer_get_pin(struct strmbase_filter *iface, unsi static void renderer_destroy(struct strmbase_filter *iface) { struct strmbase_renderer *filter = impl_from_strmbase_filter(iface); - filter->pFuncsTable->renderer_destroy(filter); + filter->ops->renderer_destroy(filter); }
static HRESULT renderer_query_interface(struct strmbase_filter *iface, REFIID iid, void **out) @@ -206,8 +206,8 @@ static HRESULT renderer_query_interface(struct strmbase_filter *iface, REFIID ii struct strmbase_renderer *filter = impl_from_strmbase_filter(iface); HRESULT hr;
- if (filter->pFuncsTable->renderer_query_interface - && SUCCEEDED(hr = filter->pFuncsTable->renderer_query_interface(filter, iid, out))) + if (filter->ops->renderer_query_interface + && SUCCEEDED(hr = filter->ops->renderer_query_interface(filter, iid, out))) { return hr; } @@ -233,8 +233,8 @@ static HRESULT renderer_init_stream(struct strmbase_filter *iface) ResetEvent(filter->state_event); filter->eos = FALSE; ResetEvent(filter->flush_event); - if (filter->pFuncsTable->renderer_init_stream) - filter->pFuncsTable->renderer_init_stream(filter); + if (filter->ops->renderer_init_stream) + filter->ops->renderer_init_stream(filter);
return filter->sink.pin.peer ? S_FALSE : S_OK; } @@ -249,8 +249,8 @@ static HRESULT renderer_start_stream(struct strmbase_filter *iface, REFERENCE_TI if (filter->sink.pin.peer) filter->eos = FALSE; reset_qos(filter); - if (filter->sink.pin.peer && filter->pFuncsTable->renderer_start_stream) - filter->pFuncsTable->renderer_start_stream(filter); + if (filter->sink.pin.peer && filter->ops->renderer_start_stream) + filter->ops->renderer_start_stream(filter);
return S_OK; } @@ -261,8 +261,8 @@ static HRESULT renderer_stop_stream(struct strmbase_filter *iface)
ResetEvent(filter->run_event);
- if (filter->sink.pin.peer && filter->pFuncsTable->renderer_stop_stream) - filter->pFuncsTable->renderer_stop_stream(filter); + if (filter->sink.pin.peer && filter->ops->renderer_stop_stream) + filter->ops->renderer_stop_stream(filter);
return S_OK; } @@ -302,7 +302,7 @@ static const struct strmbase_filter_ops filter_ops = static HRESULT sink_query_accept(struct strmbase_pin *pin, const AM_MEDIA_TYPE *mt) { struct strmbase_renderer *filter = impl_from_IPin(&pin->IPin_iface); - return filter->pFuncsTable->renderer_query_accept(filter, mt); + return filter->ops->renderer_query_accept(filter, mt); }
static HRESULT sink_query_interface(struct strmbase_pin *iface, REFIID iid, void **out) @@ -310,8 +310,8 @@ static HRESULT sink_query_interface(struct strmbase_pin *iface, REFIID iid, void struct strmbase_renderer *filter = impl_from_IPin(&iface->IPin_iface); HRESULT hr;
- if (filter->pFuncsTable->renderer_pin_query_interface - && SUCCEEDED(hr = filter->pFuncsTable->renderer_pin_query_interface(filter, iid, out))) + if (filter->ops->renderer_pin_query_interface + && SUCCEEDED(hr = filter->ops->renderer_pin_query_interface(filter, iid, out))) return hr;
if (IsEqualGUID(iid, &IID_IMemInputPin)) @@ -344,7 +344,7 @@ static HRESULT WINAPI BaseRenderer_Receive(struct strmbase_sink *pin, IMediaSamp TRACE("Format change.\n"); strmbase_dump_media_type(mt);
- if (FAILED(filter->pFuncsTable->renderer_query_accept(filter, mt))) + if (FAILED(filter->ops->renderer_query_accept(filter, mt))) return VFW_E_TYPE_NOT_ACCEPTED; DeleteMediaType(mt); } @@ -361,7 +361,7 @@ static HRESULT WINAPI BaseRenderer_Receive(struct strmbase_sink *pin, IMediaSamp
filter->current_sample = sample;
- hr = filter->pFuncsTable->renderer_render(filter, sample); + hr = filter->ops->renderer_render(filter, sample);
SetEvent(filter->state_event); LeaveCriticalSection(&filter->filter.stream_cs); @@ -401,14 +401,14 @@ static HRESULT WINAPI BaseRenderer_Receive(struct strmbase_sink *pin, IMediaSamp }
if (state == State_Running) - hr = filter->pFuncsTable->renderer_render(filter, sample); + hr = filter->ops->renderer_render(filter, sample);
perform_qos(filter, start, stop, jitter); } else { if (state == State_Running) - hr = filter->pFuncsTable->renderer_render(filter, sample); + hr = filter->ops->renderer_render(filter, sample); }
return hr; @@ -418,8 +418,8 @@ static HRESULT sink_connect(struct strmbase_sink *iface, IPin *peer, const AM_ME { struct strmbase_renderer *filter = impl_from_IPin(&iface->pin.IPin_iface);
- if (filter->pFuncsTable->renderer_connect) - return filter->pFuncsTable->renderer_connect(filter, mt); + if (filter->ops->renderer_connect) + return filter->ops->renderer_connect(filter, mt); return S_OK; }
@@ -427,8 +427,8 @@ static void sink_disconnect(struct strmbase_sink *iface) { struct strmbase_renderer *filter = impl_from_IPin(&iface->pin.IPin_iface);
- if (filter->pFuncsTable->renderer_disconnect) - filter->pFuncsTable->renderer_disconnect(filter); + if (filter->ops->renderer_disconnect) + filter->ops->renderer_disconnect(filter); }
static HRESULT sink_eos(struct strmbase_sink *iface) @@ -580,7 +580,7 @@ void strmbase_renderer_init(struct strmbase_renderer *filter, IUnknown *outer, ISeekingPassThru_Init(&filter->passthrough.ISeekingPassThru_iface, TRUE, &filter->sink.pin.IPin_iface); filter->IQualityControl_iface.lpVtbl = &quality_control_vtbl;
- filter->pFuncsTable = ops; + filter->ops = ops;
strmbase_sink_init(&filter->sink, &filter->filter, sink_name, &sink_ops, NULL);
diff --git a/include/wine/strmbase.h b/include/wine/strmbase.h index 9906a9ffd74..788abfd1c9f 100644 --- a/include/wine/strmbase.h +++ b/include/wine/strmbase.h @@ -300,7 +300,7 @@ struct strmbase_renderer REFERENCE_TIME last_left, avg_duration, avg_pt; double avg_rate;
- const struct strmbase_renderer_ops *pFuncsTable; + const struct strmbase_renderer_ops *ops;
BOOL eos; };