On 2016-07-19 19:08, Aaryaman Vasishta wrote:
+ if (FAILED(hr =
IDirect3DRMDevice_QueryInterface(device, &IID_IDirect3DRMDevice3, (void
**)&device3)))
+ return hr;
+
+ if (FAILED(hr = IDirect3DRMFrame_QueryInterface(camera, &IID_IDirect3DRMFrame3,
(void **)&camera3)))
+ {
+ IDirect3DRMDevice3_Release(device3);
+ return hr;
+ }
+ IDirect3DRMDevice_Release(device);
+ IDirect3DRMFrame_Release(camera);
This releases references you don't own.
Same in the V2 -> V3 thunk.
+ if (!device || !camera)
+ return D3DRMERR_BADOBJECT;
+ if (!viewport)
+ return D3DRMERR_BADVALUE;
These checks are redundant, Init() does that as
well.
+ ok(ref4 == frame_ref, "Expected ref4 ==
frame_ref, got frame_ref = %u, ref4 = %u.\n", frame_ref, ref4);
+
+ device_ref = get_refcount((IUnknown *)device1);
+ frame_ref = get_refcount((IUnknown *)frame);
The get_refcount here seems
redundant because you've just shown that it is back to where it used to be.