Rebase against d7430abd406d1f298acb9b2e5a397e11e448f304.

This commit is contained in:
Zebediah Figura
2018-03-27 18:31:13 -05:00
parent f7ba182039
commit b7119079a3
17 changed files with 2250 additions and 347 deletions

View File

@@ -1,4 +1,4 @@
From 269fa9451452446fb3c79cece46b61617f6eb480 Mon Sep 17 00:00:00 2001
From 9a44bb05045ad2a8fbe8b6a15975474ea5be2c6a Mon Sep 17 00:00:00 2001
From: Henri Verbeet <hverbeet@codeweavers.com>
Date: Sun, 8 Jan 2017 22:32:32 +0100
Subject: ddraw: Implement ddraw7_FlipToGDISurface. (v2)
@@ -6,14 +6,14 @@ Subject: ddraw: Implement ddraw7_FlipToGDISurface. (v2)
---
dlls/ddraw/ddraw.c | 9 ++++++++-
dlls/ddraw/ddraw_private.h | 1 +
dlls/ddraw/surface.c | 5 +++--
3 files changed, 12 insertions(+), 3 deletions(-)
dlls/ddraw/surface.c | 2 +-
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 3b4c628666b..7a313e384ac 100644
index 32f0172..6c94eb8 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -2061,7 +2061,14 @@ static HRESULT WINAPI d3d1_Initialize(IDirect3D *iface, REFIID riid)
@@ -2063,7 +2063,14 @@ static HRESULT WINAPI d3d1_Initialize(IDirect3D *iface, REFIID riid)
*****************************************************************************/
static HRESULT WINAPI ddraw7_FlipToGDISurface(IDirectDraw7 *iface)
{
@@ -25,15 +25,15 @@ index 3b4c628666b..7a313e384ac 100644
+ ddraw->flags |= DDRAW_GDI_FLIP;
+
+ if (ddraw->primary)
+ ddraw_surface_update_frontbuffer(ddraw->primary, NULL, FALSE);
+ ddraw_surface_update_frontbuffer(ddraw->primary, NULL, FALSE, 0);
return DD_OK;
}
diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index 1133bbdd07d..c18ab12a39a 100644
index a9632de..336c4dd 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -56,6 +56,7 @@ struct FvfToDecl
@@ -59,6 +59,7 @@ struct FvfToDecl
#define DDRAW_NO3D 0x00000008
#define DDRAW_SCL_DDRAW1 0x00000010
#define DDRAW_SCL_RECURSIVE 0x00000020
@@ -42,34 +42,18 @@ index 1133bbdd07d..c18ab12a39a 100644
#define DDRAW_STRIDE_ALIGNMENT 8
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 4b53ac341d5..49caa0aaeae 100644
index 2d20049..0e4543b 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -42,6 +42,7 @@ static inline struct ddraw_surface *impl_from_IDirectDrawGammaControl(IDirectDra
* to support windowless rendering first. */
HRESULT ddraw_surface_update_frontbuffer(struct ddraw_surface *surface, const RECT *rect, BOOL read)
{
+ struct ddraw *ddraw = surface->ddraw;
HDC surface_dc, screen_dc;
int x, y, w, h;
HRESULT hr;
@@ -62,14 +63,14 @@ HRESULT ddraw_surface_update_frontbuffer(struct ddraw_surface *surface, const RE
@@ -64,7 +64,7 @@ HRESULT ddraw_surface_update_frontbuffer(struct ddraw_surface *surface,
if (w <= 0 || h <= 0)
return DD_OK;
- if (surface->ddraw->swapchain_window)
+ if (ddraw->swapchain_window && !(ddraw->flags & DDRAW_GDI_FLIP))
+ if (surface->ddraw->swapchain_window && !(surface->ddraw->flags & DDRAW_GDI_FLIP))
{
/* Nothing to do, we control the frontbuffer, or at least the parts we
* care about. */
if (read)
return DD_OK;
- return wined3d_texture_blt(surface->ddraw->wined3d_frontbuffer, 0, rect,
+ return wined3d_texture_blt(ddraw->wined3d_frontbuffer, 0, rect,
surface->wined3d_texture, surface->sub_resource_idx, rect, 0, NULL, WINED3D_TEXF_POINT);
}
--
2.11.0
2.7.4