Henri Verbeet : d3d9: Always pass "struct event_data" to "event_fn" in the stateblock tests.

Alexandre Julliard julliard at winehq.org
Mon Oct 5 09:54:27 CDT 2009


Module: wine
Branch: master
Commit: 54e28991fc9584324d75c5f56d9a3d3103144d1c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=54e28991fc9584324d75c5f56d9a3d3103144d1c

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Mon Oct  5 09:47:35 2009 +0200

d3d9: Always pass "struct event_data" to "event_fn" in the stateblock tests.

---

 dlls/d3d9/tests/stateblock.c |   73 ++++++++++++++++++-----------------------
 1 files changed, 32 insertions(+), 41 deletions(-)

diff --git a/dlls/d3d9/tests/stateblock.c b/dlls/d3d9/tests/stateblock.c
index bd85535..22fa1de 100644
--- a/dlls/d3d9/tests/stateblock.c
+++ b/dlls/d3d9/tests/stateblock.c
@@ -156,10 +156,17 @@ struct state_test
 #define EVENT_ERROR          0x08
 #define EVENT_APPLY_DATA     0x10
 
+struct event_data
+{
+    IDirect3DStateBlock9 *stateblock;
+    IDirect3DSurface9 *original_render_target;
+    IDirect3DSwapChain9 *new_swap_chain;
+};
+
 struct event
 {
-   int (*event_fn) (IDirect3DDevice9* device, void* arg);
-   int status;
+    int (*event_fn)(IDirect3DDevice9 *device, struct event_data *event_data);
+    int status;
 };
 
 /* This is an event-machine, which tests things.
@@ -167,7 +174,7 @@ struct event
  * results from the event function, which directs what's to be done */
 
 static void execute_test_chain(IDirect3DDevice9 *device, struct state_test *test,
-        unsigned int ntests, struct event *event, unsigned int nevents, void *event_arg)
+        unsigned int ntests, struct event *event, unsigned int nevents, struct event_data *event_data)
 {
     int outcome;
     unsigned int i = 0, j;
@@ -178,7 +185,7 @@ static void execute_test_chain(IDirect3DDevice9 *device, struct state_test *test
         /* Execute the next event handler (if available) or just set the supplied status */
         outcome = event[j].status;
         if (event[j].event_fn)
-            outcome |= event[j].event_fn(device, event_arg);
+            outcome |= event[j].event_fn(device, event_data);
 
         /* Now verify correct outcome depending on what was signaled by the handler.
          * An EVENT_CHECK_TEST signal means check the returned data against the test_data (out).
@@ -253,20 +260,12 @@ static void execute_test_chain(IDirect3DDevice9 *device, struct state_test *test
          test[i].set_handler(device, &test[i], test[i].default_data);
 }
 
-struct event_data
-{
-    IDirect3DStateBlock9* stateblock;
-    IDirect3DSurface9* original_render_target;
-    IDirect3DSwapChain9* new_swap_chain;
-};
-
-static int switch_render_target(IDirect3DDevice9 *device, void *data)
+static int switch_render_target(IDirect3DDevice9 *device, struct event_data *event_data)
 {
     HRESULT hret;
     D3DPRESENT_PARAMETERS present_parameters;
     IDirect3DSwapChain9* swapchain = NULL;
     IDirect3DSurface9* backbuffer = NULL;
-    struct event_data* edata = data;
 
     /* Parameters for new swapchain */
     ZeroMemory(&present_parameters, sizeof(present_parameters));
@@ -284,7 +283,7 @@ static int switch_render_target(IDirect3DDevice9 *device, void *data)
     if (hret != D3D_OK) goto error;
 
     /* Save the current render target */
-    hret = IDirect3DDevice9_GetRenderTarget(device, 0, &edata->original_render_target);
+    hret = IDirect3DDevice9_GetRenderTarget(device, 0, &event_data->original_render_target);
     ok (hret == D3D_OK, "GetRenderTarget returned %#x.\n", hret);
     if (hret != D3D_OK) goto error;
 
@@ -294,7 +293,7 @@ static int switch_render_target(IDirect3DDevice9 *device, void *data)
     if (hret != D3D_OK) goto error;
 
     IUnknown_Release(backbuffer);
-    edata->new_swap_chain = swapchain;
+    event_data->new_swap_chain = swapchain;
     return EVENT_OK;
 
     error:
@@ -303,79 +302,71 @@ static int switch_render_target(IDirect3DDevice9 *device, void *data)
     return EVENT_ERROR;
 }
 
-static int revert_render_target(IDirect3DDevice9 *device, void *data)
+static int revert_render_target(IDirect3DDevice9 *device, struct event_data *event_data)
 {
-    struct event_data *edata = data;
     HRESULT hret;
 
     /* Reset the old render target */
-    hret = IDirect3DDevice9_SetRenderTarget(device, 0, edata->original_render_target);
+    hret = IDirect3DDevice9_SetRenderTarget(device, 0, event_data->original_render_target);
     ok (hret == D3D_OK, "SetRenderTarget returned %#x.\n", hret);
     if (hret != D3D_OK) {
-        IUnknown_Release(edata->original_render_target);
+        IUnknown_Release(event_data->original_render_target);
         return EVENT_ERROR;
     }
 
-    IUnknown_Release(edata->original_render_target);
+    IUnknown_Release(event_data->original_render_target);
+    IUnknown_Release(event_data->new_swap_chain);
 
-    IUnknown_Release(edata->new_swap_chain);
     return EVENT_OK;
 }
 
-static int begin_stateblock(
-    IDirect3DDevice9* device,
-    void* data) {
-
+static int begin_stateblock(IDirect3DDevice9 *device, struct event_data *event_data)
+{
     HRESULT hret;
 
-    data = NULL;
     hret = IDirect3DDevice9_BeginStateBlock(device);
     ok(hret == D3D_OK, "BeginStateBlock returned %#x.\n", hret);
     if (hret != D3D_OK) return EVENT_ERROR;
     return EVENT_OK;
 }
 
-static int end_stateblock(IDirect3DDevice9 *device, void *data)
+static int end_stateblock(IDirect3DDevice9 *device, struct event_data *event_data)
 {
-    struct event_data *edata = data;
     HRESULT hret;
 
-    hret = IDirect3DDevice9_EndStateBlock(device, &edata->stateblock);
+    hret = IDirect3DDevice9_EndStateBlock(device, &event_data->stateblock);
     ok(hret == D3D_OK, "EndStateBlock returned %#x.\n", hret);
     if (hret != D3D_OK) return EVENT_ERROR;
     return EVENT_OK;
 }
 
-static int abort_stateblock(IDirect3DDevice9 *device, void *data)
+static int abort_stateblock(IDirect3DDevice9 *device, struct event_data *event_data)
 {
-    struct event_data *edata = data;
-
-    IUnknown_Release(edata->stateblock);
+    IUnknown_Release(event_data->stateblock);
     return EVENT_OK;
 }
 
-static int apply_stateblock(IDirect3DDevice9 *device, void *data)
+static int apply_stateblock(IDirect3DDevice9 *device, struct event_data *event_data)
 {
-    struct event_data *edata = data;
     HRESULT hret;
 
-    hret = IDirect3DStateBlock9_Apply(edata->stateblock);
+    hret = IDirect3DStateBlock9_Apply(event_data->stateblock);
     ok(hret == D3D_OK, "Apply returned %#x.\n", hret);
     if (hret != D3D_OK) {
-        IUnknown_Release(edata->stateblock);
+        IUnknown_Release(event_data->stateblock);
         return EVENT_ERROR;
     }
 
-    IUnknown_Release(edata->stateblock);
+    IUnknown_Release(event_data->stateblock);
+
     return EVENT_OK;
 }
 
-static int capture_stateblock(IDirect3DDevice9 *device, void *data)
+static int capture_stateblock(IDirect3DDevice9 *device, struct event_data *event_data)
 {
-    struct event_data *edata = data;
     HRESULT hret;
 
-    hret = IDirect3DStateBlock9_Capture(edata->stateblock);
+    hret = IDirect3DStateBlock9_Capture(event_data->stateblock);
     ok(hret == D3D_OK, "Capture returned %#x.\n", hret);
     if (hret != D3D_OK)
         return EVENT_ERROR;




More information about the wine-cvs mailing list