From 8bc7139b6fe27ba8fe80ae3414dee436d5b92f6e Mon Sep 17 00:00:00 2001 From: Paul Gofman Date: Wed, 15 May 2019 18:06:48 +0300 Subject: [PATCH] ddraw: Fix setting current viewport for ddraw1. Signed-off-by: Paul Gofman Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- 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 19f21a89236..7137f78dad1 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 18e585407ce..ade56bbc9ea 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 f9082dc028c..637c2bdc5f8 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));