The tests also pass when the frame is created via IDirect3DRM_CreateFrame and IDirect3DRM2_CreateFrame.

On Tue, Mar 31, 2015 at 1:36 AM, Aaryaman Vasishta <jem456.vasishta@gmail.com> wrote:
---
��dlls/d3drm/tests/d3drm.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++++
��1 file changed, 99 insertions(+)

diff --git a/dlls/d3drm/tests/d3drm.c b/dlls/d3drm/tests/d3drm.c
index 515aace..6029b1a 100644
--- a/dlls/d3drm/tests/d3drm.c
+++ b/dlls/d3drm/tests/d3drm.c
@@ -1841,6 +1841,104 @@ static void test_d3drm_qi(void)
�� �� ��IDirect3DRM_Release(d3drm);
��}

+static void test_frame_qi(void)
+{
+�� �� static const struct qi_test tests[] =
+�� �� {
+�� �� �� �� { &IID_IDirect3DRMFrame3,�� �� �� �� �� &IID_IDirect3DRMFrame3, S_OK,�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� FALSE },
+�� �� �� �� { &IID_IDirect3DRMFrame2,�� �� �� �� �� &IID_IDirect3DRMFrame3, S_OK,�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� FALSE },
+�� �� �� �� { &IID_IDirect3DRMFrame,�� �� �� �� �� ��&IID_IDirect3DRMFrame3, S_OK,�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� FALSE },
+�� �� �� �� { &IID_IDirect3DRM,�� �� �� �� �� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMDevice,�� �� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMObject,�� �� �� �� �� &IID_IDirect3DRMFrame3, S_OK,�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� FALSE },
+�� �� �� �� { &IID_IDirect3DRMDevice2,�� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMDevice3,�� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMViewport,�� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMViewport2,�� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRM3,�� �� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRM2,�� �� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMVisual,�� �� �� �� �� &IID_IDirect3DRMFrame3, S_OK,�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� FALSE },
+�� �� �� �� { &IID_IDirect3DRMMesh,�� �� �� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMMeshBuilder,�� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMMeshBuilder2,�� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMMeshBuilder3,�� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMFace,�� �� �� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMFace2,�� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMLight,�� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMTexture,�� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMTexture2,�� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMTexture3,�� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMWrap,�� �� �� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMMaterial,�� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMMaterial2,�� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMAnimation,�� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMAnimation2,�� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMAnimationSet,�� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMAnimationSet2,�� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMObjectArray,�� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMDeviceArray,�� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMViewportArray,�� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMFrameArray,�� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMVisualArray,�� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMLightArray,�� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMPickedArray,�� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMFaceArray,�� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMAnimationArray,�� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMUserVisual,�� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMShadow,�� �� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMShadow2,�� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMInterpolator,�� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMProgressiveMesh, NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMPicked2Array,�� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DRMClippedVisual,�� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDrawClipper,�� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDrawSurface7,�� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDrawSurface4,�� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDrawSurface3,�� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDrawSurface2,�� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDrawSurface,�� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DDevice7,�� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DDevice3,�� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DDevice2,�� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DDevice,�� �� �� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3D7,�� �� �� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3D3,�� �� �� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3D2,�� �� �� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3D,�� �� �� �� �� �� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDraw7,�� �� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDraw4,�� �� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDraw3,�� �� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDraw2,�� �� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirectDraw,�� �� �� �� �� �� �� �� NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IDirect3DLight,�� �� �� �� �� �� ��NULL,�� �� �� �� �� �� �� �� �� ��CLASS_E_CLASSNOTAVAILABLE,�� �� �� �� �� �� ��FALSE },
+�� �� �� �� { &IID_IUnknown,�� �� �� �� �� �� �� �� �� ��&IID_IDirect3DRMFrame3, S_OK,�� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� �� FALSE },
+�� �� };
+�� �� HRESULT hr;
+�� �� IDirect3DRM *d3drm;
+�� �� IDirect3DRM3 *d3drm3;
+�� �� IDirect3DRMFrame3 *frame3;
+
+�� �� hr = Direct3DRMCreate(&d3drm);
+�� �� ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);
+
+�� �� if (FAILED(hr = IDirect3DRM_QueryInterface(d3drm, &IID_IDirect3DRM3, (void **)&d3drm3)))
+�� �� {
+�� �� �� �� win_skip("Cannot get IDirect3DRM3 interface (hr = %x), skipping tests\n", hr);
+�� �� �� �� IDirect3DRM_Release(d3drm);
+�� �� �� �� return;
+�� �� }
+
+�� �� hr = IDirect3DRM3_CreateFrame(d3drm3, NULL, &frame3);
+�� �� ok(hr == D3DRM_OK, "Cannot get IDirect3DRMFrame3 interface (hr = %x)\n", hr);
+�� �� CHECK_REFCOUNT(frame3, 1);
+
+�� �� test_qi("frame_qi", (IUnknown *)frame3, &IID_IDirect3DRMFrame3, tests, sizeof(tests) / sizeof(*tests));
+
+�� �� IDirect3DRMFrame3_Release(frame3);
+�� �� IDirect3DRM3_Release(d3drm3);
+�� �� IDirect3DRM_Release(d3drm);
+}
+
��START_TEST(d3drm)
��{
�� �� ��test_MeshBuilder();
@@ -1857,4 +1955,5 @@ START_TEST(d3drm)
�� �� ��test_d3drm_load();
�� �� ��test_frame_mesh_materials();
�� �� ��test_d3drm_qi();
+�� �� test_frame_qi();
��}
--
1.9.3 (Apple Git-50)