<div dir="ltr">Made d3drm use wine's implementation instead of loading dll at runtime.<br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 17, 2015 at 11:19 PM, Aaryaman Vasishta <span dir="ltr"><<a href="mailto:jem456.vasishta@gmail.com" target="_blank">jem456.vasishta@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">---<br>
 dlls/d3drm/tests/Makefile.in |   2 +-<br>
 dlls/d3drm/tests/d3drm.c     | 132 +++++++++++++++++++++++++++----------------<br>
 2 files changed, 84 insertions(+), 50 deletions(-)<br>
<br>
diff --git a/dlls/d3drm/tests/Makefile.in b/dlls/d3drm/tests/Makefile.in<br>
index dc6e8d1..b5fdb56 100644<br>
--- a/dlls/d3drm/tests/Makefile.in<br>
+++ b/dlls/d3drm/tests/Makefile.in<br>
@@ -1,5 +1,5 @@<br>
 TESTDLL   = d3drm.dll<br>
-IMPORTS   = dxguid ddraw user32 uuid<br>
+IMPORTS   = d3drm dxguid ddraw user32 uuid<br>
<br>
 C_SRCS = \<br>
        d3drm.c \<br>
diff --git a/dlls/d3drm/tests/d3drm.c b/dlls/d3drm/tests/d3drm.c<br>
index f9925ae..edc451b 100644<br>
--- a/dlls/d3drm/tests/d3drm.c<br>
+++ b/dlls/d3drm/tests/d3drm.c<br>
@@ -26,9 +26,6 @@<br>
<br>
 #include "wine/test.h"<br>
<br>
-static HMODULE d3drm_handle = 0;<br>
-<br>
-static HRESULT (WINAPI * pDirect3DRMCreate)(IDirect3DRM **d3drm);<br>
<br>
 #define CHECK_REFCOUNT(obj,rc) \<br>
     { \<br>
@@ -37,28 +34,6 @@ static HRESULT (WINAPI * pDirect3DRMCreate)(IDirect3DRM **d3drm);<br>
         ok(count == rc_new, "Invalid refcount. Expected %d got %d\n", rc_new, count); \<br>
     }<br>
<br>
-#define D3DRM_GET_PROC(func) \<br>
-    p ## func = (void*)GetProcAddress(d3drm_handle, #func); \<br>
-    if(!p ## func) { \<br>
-      trace("GetProcAddress(%s) failed\n", #func); \<br>
-      FreeLibrary(d3drm_handle); \<br>
-      return FALSE; \<br>
-    }<br>
-<br>
-static BOOL InitFunctionPtrs(void)<br>
-{<br>
-    d3drm_handle = LoadLibraryA("d3drm.dll");<br>
-<br>
-    if(!d3drm_handle)<br>
-    {<br>
-        skip("Could not load d3drm.dll\n");<br>
-        return FALSE;<br>
-    }<br>
-<br>
-    D3DRM_GET_PROC(Direct3DRMCreate)<br>
-<br>
-    return TRUE;<br>
-}<br>
<br>
 static int get_refcount(IUnknown *object)<br>
 {<br>
@@ -242,7 +217,7 @@ static void test_MeshBuilder(void)<br>
     D3DCOLOR color;<br>
     CHAR cname[64] = {0};<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     hr = IDirect3DRM_CreateMeshBuilder(d3drm, &pMeshBuilder);<br>
@@ -538,7 +513,7 @@ static void test_MeshBuilder3(void)<br>
     DWORD size;<br>
     CHAR cname[64] = {0};<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     if (FAILED(hr = IDirect3DRM_QueryInterface(d3drm, &IID_IDirect3DRM3, (void **)&d3drm3)))<br>
@@ -644,7 +619,7 @@ static void test_Mesh(void)<br>
     DWORD size;<br>
     CHAR cname[64] = {0};<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     hr = IDirect3DRM_CreateMesh(d3drm, &mesh);<br>
@@ -685,7 +660,7 @@ static void test_Face(void)<br>
     CHAR cname[64] = {0};<br>
     int icount;<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     hr = IDirect3DRM_CreateFace(d3drm, &face1);<br>
@@ -925,7 +900,7 @@ static void test_Frame(void)<br>
     DWORD count;<br>
     CHAR cname[64] = {0};<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     hr = IDirect3DRM_CreateFrame(d3drm, NULL, &pFrameC);<br>
@@ -1257,7 +1232,7 @@ static void test_Viewport(void)<br>
     window = CreateWindowA("static", "d3drm_test", WS_OVERLAPPEDWINDOW, 0, 0, 300, 200, 0, 0, 0, 0);<br>
     GetClientRect(window, &rc);<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     hr = DirectDrawCreateClipper(0, &pClipper, NULL);<br>
@@ -1308,7 +1283,7 @@ static void test_Light(void)<br>
     DWORD size;<br>
     CHAR cname[64] = {0};<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     hr = IDirect3DRM_CreateLightRGB(d3drm, D3DRMLIGHT_SPOT, 0.5, 0.5, 0.5, &light);<br>
@@ -1363,7 +1338,7 @@ static void test_Material2(void)<br>
     DWORD size;<br>
     CHAR cname[64] = {0};<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     if (FAILED(hr = IDirect3DRM_QueryInterface(d3drm, &IID_IDirect3DRM3, (void **)&d3drm3)))<br>
@@ -1447,7 +1422,7 @@ static void test_Texture(void)<br>
     DWORD size;<br>
     CHAR cname[64] = {0};<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     initimg.buffer1 = &pixel;<br>
@@ -1488,7 +1463,7 @@ static void test_Device(void)<br>
     window = CreateWindowA("static", "d3drm_test", WS_OVERLAPPEDWINDOW, 0, 0, 300, 200, 0, 0, 0, 0);<br>
     GetClientRect(window, &rc);<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     hr = DirectDrawCreateClipper(0, &pClipper, NULL);<br>
@@ -1551,7 +1526,7 @@ static void test_frame_transform(void)<br>
     IDirect3DRMFrame *frame;<br>
     D3DRMMATRIX4D matrix;<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     hr = IDirect3DRM_CreateFrame(d3drm, NULL, &frame);<br>
@@ -1589,7 +1564,7 @@ static void test_d3drm_load(void)<br>
     D3DRMLOADMEMORY info;<br>
     const GUID* req_refiids[] = { &IID_IDirect3DRMMeshBuilder, &IID_IDirect3DRMFrame, &IID_IDirect3DRMMaterial };<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     info.lpMemory = data_d3drm_load;<br>
@@ -1665,7 +1640,7 @@ static void test_frame_mesh_materials(void)<br>
     IDirect3DRMTexture *texture;<br>
     int i;<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Direct3DRMCreate returned %x\n", hr);<br>
<br>
     info.lpMemory = data_frame_mesh_materials;<br>
@@ -1736,7 +1711,7 @@ struct qi_test<br>
 };<br>
<br>
 static void test_qi(const char *test_name, IUnknown *base_iface,<br>
-                    REFIID refcount_iid, const struct qi_test *tests, UINT entry_count)<br>
+        REFIID refcount_iid, const struct qi_test *tests, UINT entry_count)<br>
 {<br>
     ULONG refcount, expected_refcount;<br>
     IUnknown *iface1, *iface2;<br>
@@ -1788,15 +1763,79 @@ static void test_d3drm_qi(void)<br>
 {<br>
     static const struct qi_test tests[] =<br>
     {<br>
-        { &IID_IDirect3DRM3, &IID_IDirect3DRM3,       S_OK, TRUE },<br>
-        { &IID_IDirect3DRM2, &IID_IDirect3DRM2,       S_OK, TRUE },<br>
-        { &IID_IDirect3DRM,  &IID_IDirect3DRM,        S_OK, FALSE },<br>
-        { &IID_IUnknown,     &IID_IDirect3DRM,        S_OK, FALSE },<br>
+        { &IID_IDirect3DRM3,              &IID_IDirect3DRM3,       S_OK,                             TRUE },<br>
+        { &IID_IDirect3DRM2,              &IID_IDirect3DRM2,       S_OK,                             TRUE },<br>
+        { &IID_IDirect3DRM,               &IID_IDirect3DRM,        S_OK,                            FALSE },<br>
+        { &IID_IDirect3DRMDevice,          NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMObject,          NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMObject2,         NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMDevice2,         NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMDevice3,         NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMViewport,        NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMViewport2,       NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMFrame,           NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMFrame2,          NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMFrame3,          NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMVisual,          NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMMesh,            NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMMeshBuilder,     NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMMeshBuilder2,    NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMMeshBuilder3,    NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMFace,            NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMFace2,           NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMLight,           NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMTexture,         NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMTexture2,        NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMTexture3,        NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMWrap,            NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMMaterial,        NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMMaterial2,       NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMAnimation,       NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMAnimation2,      NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMAnimationSet,    NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMAnimationSet2,   NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMObjectArray,     NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMDeviceArray,     NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMViewportArray,   NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMFrameArray,      NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMVisualArray,     NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMLightArray,      NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMPickedArray,     NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMFaceArray,       NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMAnimationArray,  NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMUserVisual,      NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMShadow,          NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMShadow2,         NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMInterpolator,    NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMProgressiveMesh, NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMPicked2Array,    NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DRMClippedVisual,   NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDrawClipper,         NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDrawSurface7,        NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDrawSurface4,        NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDrawSurface3,        NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDrawSurface2,        NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDrawSurface,         NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DDevice7,           NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DDevice3,           NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DDevice2,           NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DDevice,            NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3D7,                 NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3D3,                 NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3D2,                 NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3D,                  NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDraw7,               NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDraw4,               NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDraw3,               NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDraw2,               NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirectDraw,                NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IDirect3DLight,             NULL,                   CLASS_E_CLASSNOTAVAILABLE,       FALSE },<br>
+        { &IID_IUnknown,                   &IID_IDirect3DRM,       S_OK,                            FALSE },<br>
     };<br>
     HRESULT hr;<br>
     IDirect3DRM *d3drm;<br>
<br>
-    hr = pDirect3DRMCreate(&d3drm);<br>
+    hr = Direct3DRMCreate(&d3drm);<br>
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface (hr = %x)\n", hr);<br>
<br>
     test_qi("d3drm_qi", (IUnknown *)d3drm, &IID_IDirect3DRM, tests, sizeof(tests) / sizeof(*tests));<br>
@@ -1806,9 +1845,6 @@ static void test_d3drm_qi(void)<br>
<br>
 START_TEST(d3drm)<br>
 {<br>
-    if (!InitFunctionPtrs())<br>
-        return;<br>
-<br>
     test_MeshBuilder();<br>
     test_MeshBuilder3();<br>
     test_Mesh();<br>
@@ -1823,6 +1859,4 @@ START_TEST(d3drm)<br>
     test_d3drm_load();<br>
     test_frame_mesh_materials();<br>
     test_d3drm_qi();<br>
-<br>
-    FreeLibrary(d3drm_handle);<br>
 }<br>
<span><font color="#888888">--<br>
1.9.3 (Apple Git-50)<br>
<br>
</font></span></blockquote></div><br></div></div>