[PATCH 01/11] ddraw: Fix setting current viewport for ddraw1.

Paul Gofman gofmanp at gmail.com
Wed May 15 10:06:48 CDT 2019


Signed-off-by: Paul Gofman <gofmanp at gmail.com>
---
 dlls/ddraw/ddraw_private.h |  2 +-
 dlls/ddraw/device.c        |  6 +++++-
 dlls/ddraw/executebuffer.c | 13 +------------
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index 19f21a8923..7137f78dad 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -555,7 +555,7 @@ struct d3d_execute_buffer *unsafe_impl_from_IDirect3DExecuteBuffer(IDirect3DExec
 
 /* The execute function */
 HRESULT d3d_execute_buffer_execute(struct d3d_execute_buffer *execute_buffer,
-        struct d3d_device *device, struct d3d_viewport *viewport) DECLSPEC_HIDDEN;
+        struct d3d_device *device) DECLSPEC_HIDDEN;
 
 /*****************************************************************************
  * IDirect3DVertexBuffer
diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 18e585407c..ade56bbc9e 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -712,9 +712,13 @@ static HRESULT WINAPI d3d_device1_Execute(IDirect3DDevice *iface,
     if(!buffer)
         return DDERR_INVALIDPARAMS;
 
+    if (FAILED(hr = IDirect3DDevice3_SetCurrentViewport
+            (&device->IDirect3DDevice3_iface, &viewport_impl->IDirect3DViewport3_iface)))
+        return hr;
+
     /* Execute... */
     wined3d_mutex_lock();
-    hr = d3d_execute_buffer_execute(buffer, device, viewport_impl);
+    hr = d3d_execute_buffer_execute(buffer, device);
     wined3d_mutex_unlock();
 
     return hr;
diff --git a/dlls/ddraw/executebuffer.c b/dlls/ddraw/executebuffer.c
index f9082dc028..637c2bdc5f 100644
--- a/dlls/ddraw/executebuffer.c
+++ b/dlls/ddraw/executebuffer.c
@@ -48,8 +48,7 @@ static void _dump_D3DEXECUTEBUFFERDESC(const D3DEXECUTEBUFFERDESC *lpDesc) {
     TRACE("lpData       : %p\n", lpDesc->lpData);
 }
 
-HRESULT d3d_execute_buffer_execute(struct d3d_execute_buffer *buffer,
-        struct d3d_device *device, struct d3d_viewport *viewport)
+HRESULT d3d_execute_buffer_execute(struct d3d_execute_buffer *buffer, struct d3d_device *device)
 {
     DWORD is = buffer->data.dwInstructionOffset;
     char *instr = (char *)buffer->desc.lpData + is;
@@ -58,16 +57,6 @@ HRESULT d3d_execute_buffer_execute(struct d3d_execute_buffer *buffer,
     struct wined3d_box box = {0};
     HRESULT hr;
 
-    if (viewport->active_device != device)
-    {
-        WARN("Viewport %p active device is %p.\n",
-                viewport, viewport->active_device);
-        return DDERR_INVALIDPARAMS;
-    }
-
-    /* Activate the viewport */
-    viewport_activate(viewport, FALSE);
-
     TRACE("ExecuteData :\n");
     if (TRACE_ON(ddraw))
         _dump_executedata(&(buffer->data));
-- 
2.21.0




More information about the wine-devel mailing list