Zebediah Figura : quartz/vmr9: Use calloc().

Alexandre Julliard julliard at winehq.org
Thu Apr 2 14:27:36 CDT 2020


Module: wine
Branch: master
Commit: a273a0e71fe0a217e9b7b3632d756b793b4c7dcc
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a273a0e71fe0a217e9b7b3632d756b793b4c7dcc

Author: Zebediah Figura <z.figura12 at gmail.com>
Date:   Wed Apr  1 23:01:03 2020 -0500

quartz/vmr9: Use calloc().

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/quartz/vmr9.c | 119 ++++++++++++++++++++++-------------------------------
 1 file changed, 50 insertions(+), 69 deletions(-)

diff --git a/dlls/quartz/vmr9.c b/dlls/quartz/vmr9.c
index c44607b3ef..58fbef5433 100644
--- a/dlls/quartz/vmr9.c
+++ b/dlls/quartz/vmr9.c
@@ -597,7 +597,7 @@ static void vmr_destroy(struct strmbase_renderer *iface)
     FreeLibrary(filter->hD3d9);
     BaseControlWindow_Destroy(&filter->baseControlWindow);
     strmbase_renderer_cleanup(&filter->renderer);
-    CoTaskMemFree(filter);
+    free(filter);
 
     InterlockedDecrement(&object_locks);
 }
@@ -2291,69 +2291,57 @@ static const IOverlayVtbl overlay_vtbl =
 
 static HRESULT vmr_create(IUnknown *outer, IUnknown **out, const CLSID *clsid)
 {
+    struct quartz_vmr *object;
     HRESULT hr;
-    struct quartz_vmr* pVMR;
 
-    *out = NULL;
-
-    pVMR = CoTaskMemAlloc(sizeof(struct quartz_vmr));
+    if (!(object = calloc(1, sizeof(*object))))
+        return E_OUTOFMEMORY;
 
-    pVMR->hD3d9 = LoadLibraryA("d3d9.dll");
-    if (!pVMR->hD3d9 )
+    object->hD3d9 = LoadLibraryA("d3d9.dll");
+    if (!object->hD3d9)
     {
         WARN("Could not load d3d9.dll\n");
-        CoTaskMemFree(pVMR);
+        free(object);
         return VFW_E_DDRAW_CAPS_NOT_SUITABLE;
     }
 
-    pVMR->IAMCertifiedOutputProtection_iface.lpVtbl = &IAMCertifiedOutputProtection_Vtbl;
-    pVMR->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl;
-
-    pVMR->mode = 0;
-    pVMR->allocator_d3d9_dev = NULL;
-    pVMR->allocator_mon= NULL;
-    pVMR->num_surfaces = pVMR->cur_surface = 0;
-    pVMR->allocator = NULL;
-    pVMR->presenter = NULL;
-    pVMR->hWndClippingWindow = NULL;
-    pVMR->IVMRFilterConfig_iface.lpVtbl = &VMR7_FilterConfig_Vtbl;
-    pVMR->IVMRFilterConfig9_iface.lpVtbl = &VMR9_FilterConfig_Vtbl;
-    pVMR->IVMRMonitorConfig_iface.lpVtbl = &VMR7_MonitorConfig_Vtbl;
-    pVMR->IVMRMonitorConfig9_iface.lpVtbl = &VMR9_MonitorConfig_Vtbl;
-    pVMR->IVMRSurfaceAllocatorNotify_iface.lpVtbl = &VMR7_SurfaceAllocatorNotify_Vtbl;
-    pVMR->IVMRSurfaceAllocatorNotify9_iface.lpVtbl = &VMR9_SurfaceAllocatorNotify_Vtbl;
-    pVMR->IVMRWindowlessControl_iface.lpVtbl = &VMR7_WindowlessControl_Vtbl;
-    pVMR->IVMRWindowlessControl9_iface.lpVtbl = &VMR9_WindowlessControl_Vtbl;
-    pVMR->IOverlay_iface.lpVtbl = &overlay_vtbl;
-
-    strmbase_renderer_init(&pVMR->renderer, outer, clsid, L"VMR Input0", &renderer_ops);
-
-    hr = video_window_init(&pVMR->baseControlWindow, &IVideoWindow_VTable,
-            &pVMR->renderer.filter, &pVMR->renderer.sink.pin, &renderer_BaseWindowFuncTable);
+    strmbase_renderer_init(&object->renderer, outer, clsid, L"VMR Input0", &renderer_ops);
+    object->IAMCertifiedOutputProtection_iface.lpVtbl = &IAMCertifiedOutputProtection_Vtbl;
+    object->IAMFilterMiscFlags_iface.lpVtbl = &IAMFilterMiscFlags_Vtbl;
+    object->IVMRFilterConfig_iface.lpVtbl = &VMR7_FilterConfig_Vtbl;
+    object->IVMRFilterConfig9_iface.lpVtbl = &VMR9_FilterConfig_Vtbl;
+    object->IVMRMonitorConfig_iface.lpVtbl = &VMR7_MonitorConfig_Vtbl;
+    object->IVMRMonitorConfig9_iface.lpVtbl = &VMR9_MonitorConfig_Vtbl;
+    object->IVMRSurfaceAllocatorNotify_iface.lpVtbl = &VMR7_SurfaceAllocatorNotify_Vtbl;
+    object->IVMRSurfaceAllocatorNotify9_iface.lpVtbl = &VMR9_SurfaceAllocatorNotify_Vtbl;
+    object->IVMRWindowlessControl_iface.lpVtbl = &VMR7_WindowlessControl_Vtbl;
+    object->IVMRWindowlessControl9_iface.lpVtbl = &VMR9_WindowlessControl_Vtbl;
+    object->IOverlay_iface.lpVtbl = &overlay_vtbl;
+
+    hr = video_window_init(&object->baseControlWindow, &IVideoWindow_VTable,
+            &object->renderer.filter, &object->renderer.sink.pin, &renderer_BaseWindowFuncTable);
     if (FAILED(hr))
         goto fail;
 
-    if (FAILED(hr = BaseWindowImpl_PrepareWindow(&pVMR->baseControlWindow.baseWindow)))
+    if (FAILED(hr = BaseWindowImpl_PrepareWindow(&object->baseControlWindow.baseWindow)))
         goto fail;
 
-    hr = basic_video_init(&pVMR->baseControlVideo, &pVMR->renderer.filter,
-            &pVMR->renderer.sink.pin, &renderer_BaseControlVideoFuncTable);
+    hr = basic_video_init(&object->baseControlVideo, &object->renderer.filter,
+            &object->renderer.sink.pin, &renderer_BaseControlVideoFuncTable);
     if (FAILED(hr))
         goto fail;
 
-    pVMR->run_event = CreateEventW(NULL, TRUE, FALSE, NULL);
+    object->run_event = CreateEventW(NULL, TRUE, FALSE, NULL);
 
-    *out = &pVMR->renderer.filter.IUnknown_inner;
-    ZeroMemory(&pVMR->source_rect, sizeof(RECT));
-    ZeroMemory(&pVMR->target_rect, sizeof(RECT));
-    TRACE("Created at %p\n", pVMR);
+    TRACE("Created VMR %p.\n", object);
+    *out = &object->renderer.filter.IUnknown_inner;
     return hr;
 
 fail:
-    BaseWindowImpl_DoneWithWindow(&pVMR->baseControlWindow.baseWindow);
-    strmbase_renderer_cleanup(&pVMR->renderer);
-    FreeLibrary(pVMR->hD3d9);
-    CoTaskMemFree(pVMR);
+    BaseWindowImpl_DoneWithWindow(&object->baseControlWindow.baseWindow);
+    strmbase_renderer_cleanup(&object->renderer);
+    FreeLibrary(object->hD3d9);
+    free(object);
     return hr;
 }
 
@@ -2423,7 +2411,7 @@ static ULONG WINAPI VMR9_ImagePresenter_Release(IVMRImagePresenter9 *iface)
                 IDirect3DSurface9_Release(surface);
         }
 
-        CoTaskMemFree(This->d3d9_surfaces);
+        free(This->d3d9_surfaces);
         This->d3d9_surfaces = NULL;
         This->num_surfaces = 0;
         if (This->d3d9_vertex)
@@ -2431,7 +2419,7 @@ static ULONG WINAPI VMR9_ImagePresenter_Release(IVMRImagePresenter9 *iface)
             IDirect3DVertexBuffer9_Release(This->d3d9_vertex);
             This->d3d9_vertex = NULL;
         }
-        CoTaskMemFree(This);
+        free(This);
         return 0;
     }
     return refCount;
@@ -2699,8 +2687,8 @@ static BOOL CreateRenderingWindow(VMR9DefaultAllocatorPresenterImpl *This, VMR9A
     }
     IVMRSurfaceAllocatorNotify9_SetD3DDevice(This->SurfaceAllocatorNotify, This->d3d9_dev, This->hMon);
 
-    This->d3d9_surfaces = CoTaskMemAlloc(*numbuffers * sizeof(IDirect3DSurface9 *));
-    ZeroMemory(This->d3d9_surfaces, *numbuffers * sizeof(IDirect3DSurface9 *));
+    if (!(This->d3d9_surfaces = calloc(*numbuffers, sizeof(IDirect3DSurface9 *))))
+        return FALSE;
 
     hr = VMR9_SurfaceAllocator_SetAllocationSettings(This, info);
     if (FAILED(hr))
@@ -2915,19 +2903,18 @@ static IDirect3D9 *init_d3d9(HMODULE d3d9_handle)
 
 static HRESULT VMR9DefaultAllocatorPresenterImpl_create(struct quartz_vmr *parent, LPVOID * ppv)
 {
+    VMR9DefaultAllocatorPresenterImpl *object;
     HRESULT hr = S_OK;
     int i;
-    VMR9DefaultAllocatorPresenterImpl* This;
 
-    This = CoTaskMemAlloc(sizeof(VMR9DefaultAllocatorPresenterImpl));
-    if (!This)
+    if (!(object = calloc(1, sizeof(*object))))
         return E_OUTOFMEMORY;
 
-    This->d3d9_ptr = init_d3d9(parent->hD3d9);
-    if (!This->d3d9_ptr)
+    object->d3d9_ptr = init_d3d9(parent->hD3d9);
+    if (!object->d3d9_ptr)
     {
         WARN("Could not initialize d3d9.dll\n");
-        CoTaskMemFree(This);
+        free(object);
         return VFW_E_DDRAW_CAPS_NOT_SUITABLE;
     }
 
@@ -2936,7 +2923,7 @@ static HRESULT VMR9DefaultAllocatorPresenterImpl_create(struct quartz_vmr *paren
     {
         D3DDISPLAYMODE mode;
 
-        hr = IDirect3D9_EnumAdapterModes(This->d3d9_ptr, i++, D3DFMT_X8R8G8B8, 0, &mode);
+        hr = IDirect3D9_EnumAdapterModes(object->d3d9_ptr, i++, D3DFMT_X8R8G8B8, 0, &mode);
 	if (hr == D3DERR_INVALIDCALL) break; /* out of adapters */
     } while (FAILED(hr));
     if (FAILED(hr))
@@ -2944,24 +2931,18 @@ static HRESULT VMR9DefaultAllocatorPresenterImpl_create(struct quartz_vmr *paren
     if (hr == D3DERR_NOTAVAILABLE)
     {
         ERR("Format not supported\n");
-        IDirect3D9_Release(This->d3d9_ptr);
-        CoTaskMemFree(This);
+        IDirect3D9_Release(object->d3d9_ptr);
+        free(object);
         return VFW_E_DDRAW_CAPS_NOT_SUITABLE;
     }
 
-    This->IVMRImagePresenter9_iface.lpVtbl = &VMR9_ImagePresenter;
-    This->IVMRSurfaceAllocatorEx9_iface.lpVtbl = &VMR9_SurfaceAllocator;
+    object->IVMRImagePresenter9_iface.lpVtbl = &VMR9_ImagePresenter;
+    object->IVMRSurfaceAllocatorEx9_iface.lpVtbl = &VMR9_SurfaceAllocator;
 
-    This->refCount = 1;
-    This->pVMR9 = parent;
-    This->d3d9_surfaces = NULL;
-    This->d3d9_dev = NULL;
-    This->hMon = 0;
-    This->d3d9_vertex = NULL;
-    This->num_surfaces = 0;
-    This->SurfaceAllocatorNotify = NULL;
-    This->reset = FALSE;
+    object->refCount = 1;
+    object->pVMR9 = parent;
 
-    *ppv = &This->IVMRImagePresenter9_iface;
+    TRACE("Created default presenter %p.\n", object);
+    *ppv = &object->IVMRImagePresenter9_iface;
     return S_OK;
 }




More information about the wine-cvs mailing list