quartz/videorenderer: Use calloc() in video_renderer_create().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d1d01de751
commit
c2fa5cb547
|
@ -247,7 +247,7 @@ static void video_renderer_destroy(struct strmbase_renderer *iface)
|
||||||
BaseControlVideo_Destroy(&filter->baseControlVideo);
|
BaseControlVideo_Destroy(&filter->baseControlVideo);
|
||||||
CloseHandle(filter->run_event);
|
CloseHandle(filter->run_event);
|
||||||
strmbase_renderer_cleanup(&filter->renderer);
|
strmbase_renderer_cleanup(&filter->renderer);
|
||||||
CoTaskMemFree(filter);
|
free(filter);
|
||||||
|
|
||||||
InterlockedDecrement(&object_locks);
|
InterlockedDecrement(&object_locks);
|
||||||
}
|
}
|
||||||
|
@ -701,46 +701,38 @@ static const IOverlayVtbl overlay_vtbl =
|
||||||
|
|
||||||
HRESULT video_renderer_create(IUnknown *outer, IUnknown **out)
|
HRESULT video_renderer_create(IUnknown *outer, IUnknown **out)
|
||||||
{
|
{
|
||||||
|
VideoRendererImpl *object;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
VideoRendererImpl * pVideoRenderer;
|
|
||||||
|
|
||||||
*out = NULL;
|
if (!(object = calloc(1, sizeof(*object))))
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
|
||||||
pVideoRenderer = CoTaskMemAlloc(sizeof(VideoRendererImpl));
|
strmbase_renderer_init(&object->renderer, outer, &CLSID_VideoRenderer, L"In", &renderer_ops);
|
||||||
|
object->IOverlay_iface.lpVtbl = &overlay_vtbl;
|
||||||
|
|
||||||
pVideoRenderer->init = FALSE;
|
hr = video_window_init(&object->baseControlWindow, &IVideoWindow_VTable,
|
||||||
ZeroMemory(&pVideoRenderer->SourceRect, sizeof(RECT));
|
&object->renderer.filter, &object->renderer.sink.pin,
|
||||||
ZeroMemory(&pVideoRenderer->DestRect, sizeof(RECT));
|
|
||||||
ZeroMemory(&pVideoRenderer->WindowPos, sizeof(RECT));
|
|
||||||
pVideoRenderer->FullScreenMode = OAFALSE;
|
|
||||||
|
|
||||||
pVideoRenderer->IOverlay_iface.lpVtbl = &overlay_vtbl;
|
|
||||||
|
|
||||||
strmbase_renderer_init(&pVideoRenderer->renderer, outer,
|
|
||||||
&CLSID_VideoRenderer, L"In", &renderer_ops);
|
|
||||||
|
|
||||||
hr = video_window_init(&pVideoRenderer->baseControlWindow, &IVideoWindow_VTable,
|
|
||||||
&pVideoRenderer->renderer.filter, &pVideoRenderer->renderer.sink.pin,
|
|
||||||
&renderer_BaseWindowFuncTable);
|
&renderer_BaseWindowFuncTable);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
hr = basic_video_init(&pVideoRenderer->baseControlVideo, &pVideoRenderer->renderer.filter,
|
hr = basic_video_init(&object->baseControlVideo, &object->renderer.filter,
|
||||||
&pVideoRenderer->renderer.sink.pin, &renderer_BaseControlVideoFuncTable);
|
&object->renderer.sink.pin, &renderer_BaseControlVideoFuncTable);
|
||||||
if (FAILED(hr))
|
if (FAILED(hr))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
if (FAILED(hr = BaseWindowImpl_PrepareWindow(&pVideoRenderer->baseControlWindow.baseWindow)))
|
if (FAILED(hr = BaseWindowImpl_PrepareWindow(&object->baseControlWindow.baseWindow)))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
pVideoRenderer->run_event = CreateEventW(NULL, TRUE, FALSE, NULL);
|
object->run_event = CreateEventW(NULL, TRUE, FALSE, NULL);
|
||||||
|
|
||||||
*out = &pVideoRenderer->renderer.filter.IUnknown_inner;
|
TRACE("Created video renderer %p.\n", object);
|
||||||
|
*out = &object->renderer.filter.IUnknown_inner;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
strmbase_renderer_cleanup(&pVideoRenderer->renderer);
|
strmbase_renderer_cleanup(&object->renderer);
|
||||||
CoTaskMemFree(pVideoRenderer);
|
free(object);
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue