[PATCH 3/3] ddraw: Track the viewport and scissor rect in the primary stateblock.

Zebediah Figura z.figura12 at gmail.com
Mon Nov 18 19:08:02 CST 2019


Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 dlls/ddraw/device.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/dlls/ddraw/device.c b/dlls/ddraw/device.c
index 4ad1fdb7f57..93f85e99ebf 100644
--- a/dlls/ddraw/device.c
+++ b/dlls/ddraw/device.c
@@ -6961,6 +6961,17 @@ enum wined3d_depth_buffer_type d3d_device_update_depth_stencil(struct d3d_device
     return WINED3D_ZB_TRUE;
 }
 
+static void device_reset_viewport_state(struct d3d_device *device)
+{
+    struct wined3d_viewport vp;
+    RECT rect;
+
+    wined3d_device_get_viewports(device->wined3d_device, NULL, &vp);
+    wined3d_stateblock_set_viewport(device->state, &vp);
+    wined3d_device_get_scissor_rects(device->wined3d_device, NULL, &rect);
+    wined3d_stateblock_set_scissor_rect(device->state, &rect);
+}
+
 static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
         struct ddraw_surface *target, IUnknown *rt_iface, UINT version, IUnknown *outer_unknown)
 {
@@ -7039,6 +7050,7 @@ static HRESULT d3d_device_init(struct d3d_device *device, struct ddraw *ddraw,
         IDirect3DDevice3_SetRenderState(&device->IDirect3DDevice3_iface,
                 D3DRENDERSTATE_TEXTUREMAPBLEND, D3DTBLEND_MODULATE);
     }
+    device_reset_viewport_state(ddraw);
     return D3D_OK;
 }
 
-- 
2.23.0




More information about the wine-devel mailing list