[PATCH 5/7] d3drm: Fix device not assigning width and height after creation.
Aaryaman Vasishta
jem456.vasishta at gmail.com
Wed Jun 29 09:13:12 CDT 2016
On Wed, Jun 29, 2016 at 7:21 PM, Henri Verbeet <hverbeet at gmail.com> wrote:
> On 24 June 2016 at 23:49, Aaryaman Vasishta <jem456.vasishta at gmail.com>
> wrote:
> > HRESULT d3drm_device_set_ddraw_device_d3d(struct d3drm_device *device,
> IDirect3DRM *d3drm, IDirect3D *d3d, IDirect3DDevice *d3d_device)
> > {
> > + IDirectDrawSurface *surface;
> > + IDirect3DDevice2 *d3d_device2;
> > + DDSURFACEDESC desc;
> > + HRESULT hr;
> > +
> > device->d3drm = d3drm;
> > IDirect3DRM_AddRef(d3drm);
> > device->device = d3d_device;
> > IDirect3DDevice_AddRef(d3d_device);
> >
> > + /* Fetch render target and get width/height from there */
> > + if (FAILED(hr = IDirect3DDevice_QueryInterface(d3d_device,
> &IID_IDirectDrawSurface, (void **)&surface)))
> > + {
> > + if (FAILED(hr = IDirect3DDevice_QueryInterface(d3d_device,
> &IID_IDirect3DDevice2, (void **)&d3d_device2)))
> > + return hr;
> > + hr = IDirect3DDevice2_GetRenderTarget(d3d_device2, &surface);
> > + IDirect3DDevice2_Release(d3d_device2);
> > + if (FAILED(hr))
> > + return hr;
> > + }
> > +
> > + desc.dwSize = sizeof(desc);
> > + if (FAILED(hr = IDirectDrawSurface_GetSurfaceDesc(surface, &desc)))
> > + {
> > + IDirectDrawSurface_Release(surface);
> > + return hr;
> > + }
> > +
> > + device->width = desc.dwWidth;
> > + device->height = desc.dwHeight;
> > + IDirectDrawSurface_Release(surface);
> > +
> > return IDirect3D_QueryInterface(d3d, &IID_IDirectDraw, (void
> **)&device->ddraw);
> > }
> >
> This leaks some references (IDirect3DRM, IDirect3DDevice) on error
> paths, are those on purpose?
>
> This is a helper function, so the caller would be handling the references.
See CreateDeviceFromD3D in device.c.
Cheers,
Aaryaman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20160629/929d2fdd/attachment-0001.html>
More information about the wine-devel
mailing list