Module: wine
Branch: stable
Commit: d104f037855a08238b3685a279fdb0390cb7bcac
URL: https://source.winehq.org/git/wine.git/?a=commit;h=d104f037855a08238b3685a2…
Author: Nikolay Sivov <nsivov(a)codeweavers.com>
Date: Thu Jan 14 22:45:04 2021 +0300
dcomp: Add DCompositionCreateDevice2().
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50357
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
(cherry picked from commit c9a0006e4fda676239b1db0b322dda83cc7f141c)
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/dcomp/Makefile.in | 1 +
dlls/dcomp/dcomp.spec | 2 +-
dlls/dcomp/device.c | 32 ++++++++++++++++++++++++++++++++
3 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/dlls/dcomp/Makefile.in b/dlls/dcomp/Makefile.in
index 6d75a87980f..436b88993ab 100644
--- a/dlls/dcomp/Makefile.in
+++ b/dlls/dcomp/Makefile.in
@@ -3,6 +3,7 @@ MODULE = dcomp.dll
EXTRADLLFLAGS = -mno-cygwin
C_SRCS = \
+ device.c \
main.c
RC_SRCS = version.rc
diff --git a/dlls/dcomp/dcomp.spec b/dlls/dcomp/dcomp.spec
index 03801ebba6f..10e9f49a412 100644
--- a/dlls/dcomp/dcomp.spec
+++ b/dlls/dcomp/dcomp.spec
@@ -13,7 +13,7 @@
@ stub CreateEffectDescription
@ stub DCompositionAttachMouseDragToHwnd
@ stub DCompositionAttachMouseWheelToHwnd
-@ stub DCompositionCreateDevice2
+@ stdcall DCompositionCreateDevice2(ptr ptr ptr)
@ stub DCompositionCreateDevice3
@ stub DCompositionCreateDevice
@ stub DCompositionCreateSurfaceHandle
diff --git a/dlls/dcomp/device.c b/dlls/dcomp/device.c
new file mode 100644
index 00000000000..efc6bacdb08
--- /dev/null
+++ b/dlls/dcomp/device.c
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2020 Nikolay Sivov for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "objidl.h"
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(dcomp);
+
+HRESULT WINAPI DCompositionCreateDevice2(IUnknown *rendering_device, REFIID iid, void **device)
+{
+ FIXME("%p, %s, %p.\n", rendering_device, debugstr_guid(iid), device);
+
+ return E_NOTIMPL;
+}
Module: wine
Branch: stable
Commit: c13940de055c863da6491501c4ce0af8099f181f
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c13940de055c863da6491501…
Author: Henri Verbeet <hverbeet(a)codeweavers.com>
Date: Tue Jan 19 14:34:55 2021 +0100
ddraw: Use BitBlt() for exclusive mode frontbuffer updates if the swapchain window is not in the foreground.
Signed-off-by: Henri Verbeet <hverbeet(a)codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
(cherry picked from commit 4ce1d7f93a35322d149cbde29d619e2580159a80)
Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org>
---
dlls/ddraw/surface.c | 41 ++++++++++++++++++++++++++++++++++-------
1 file changed, 34 insertions(+), 7 deletions(-)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index fd788a96ac0..0ca19d4f8a5 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -39,6 +39,16 @@ static BOOL ddraw_surface_is_lost(const struct ddraw_surface *surface)
&& (surface->ddraw->device_state != DDRAW_DEVICE_STATE_OK || surface->is_lost);
}
+static BOOL ddraw_gdi_is_front(struct ddraw *ddraw)
+{
+ struct ddraw_surface *surface;
+
+ if (!ddraw->gdi_surface || !(surface = wined3d_texture_get_sub_resource_parent(ddraw->gdi_surface, 0)))
+ return FALSE;
+
+ return surface->surface_desc.ddsCaps.dwCaps & DDSCAPS_FRONTBUFFER;
+}
+
/* This is slow, of course. Also, in case of locks, we can't prevent other
* applications from drawing to the screen while we've locked the frontbuffer.
* We'd like to do this in wined3d instead, but for that to work wined3d needs
@@ -46,6 +56,7 @@ static BOOL ddraw_surface_is_lost(const struct ddraw_surface *surface)
HRESULT ddraw_surface_update_frontbuffer(struct ddraw_surface *surface,
const RECT *rect, BOOL read, unsigned int swap_interval)
{
+ struct ddraw *ddraw = surface->ddraw;
struct wined3d_texture *dst_texture;
HDC surface_dc, screen_dc;
int x, y, w, h;
@@ -53,9 +64,9 @@ HRESULT ddraw_surface_update_frontbuffer(struct ddraw_surface *surface,
BOOL ret;
RECT r;
- if (surface->ddraw->flags & DDRAW_SWAPPED && !read)
+ if (ddraw->flags & DDRAW_SWAPPED && !read)
{
- surface->ddraw->flags &= ~DDRAW_SWAPPED;
+ ddraw->flags &= ~DDRAW_SWAPPED;
rect = NULL;
}
@@ -73,7 +84,23 @@ HRESULT ddraw_surface_update_frontbuffer(struct ddraw_surface *surface,
if (w <= 0 || h <= 0)
return DD_OK;
- if (surface->ddraw->swapchain_window)
+ /* The interaction between ddraw and GDI drawing is not all that well
+ * documented, and somewhat arcane. In ddraw exclusive mode, GDI draws
+ * seemingly go to the *original* frontbuffer/primary surface, while ddraw
+ * draws/flips go to the *current* frontbuffer surface. The bottom line is
+ * that if the current frontbuffer is not the GDI frontbuffer, and there's
+ * e.g. a popup window in front of the ddraw swapchain window, we can't
+ * use wined3d_swapchain_present() to get the ddraw contents to the screen
+ * while in exclusive mode, since it would get obscured by the popup
+ * window. On the other hand, if the current frontbuffer *is* the GDI
+ * frontbuffer, that's what's supposed to happen; the popup should obscure
+ * (oart of) the ddraw swapchain window.
+ *
+ * This affects the "Deer Hunter" demo, which uses a popup window and GDI
+ * draws to draw part of the user interface. See also the "fswindow"
+ * sample is the DirectX 7 SDK. */
+ if (ddraw->swapchain_window && (!(ddraw->cooperative_level & DDSCL_EXCLUSIVE)
+ || ddraw->swapchain_window == GetForegroundWindow() || ddraw_gdi_is_front(ddraw)))
{
/* Nothing to do, we control the frontbuffer, or at least the parts we
* care about. */
@@ -81,15 +108,15 @@ HRESULT ddraw_surface_update_frontbuffer(struct ddraw_surface *surface,
return DD_OK;
if (swap_interval)
- dst_texture = wined3d_swapchain_get_back_buffer(surface->ddraw->wined3d_swapchain, 0);
+ dst_texture = wined3d_swapchain_get_back_buffer(ddraw->wined3d_swapchain, 0);
else
- dst_texture = surface->ddraw->wined3d_frontbuffer;
+ dst_texture = ddraw->wined3d_frontbuffer;
if (SUCCEEDED(hr = wined3d_texture_blt(dst_texture, 0, rect, surface->wined3d_texture,
surface->sub_resource_idx, rect, 0, NULL, WINED3D_TEXF_POINT)) && swap_interval)
{
- hr = wined3d_swapchain_present(surface->ddraw->wined3d_swapchain, rect, rect, NULL, swap_interval, 0);
- surface->ddraw->flags |= DDRAW_SWAPPED;
+ hr = wined3d_swapchain_present(ddraw->wined3d_swapchain, rect, rect, NULL, swap_interval, 0);
+ ddraw->flags |= DDRAW_SWAPPED;
}
return hr;
}
Module: website
Branch: master
Commit: bcae802c219cd9df61ca50fa61511c66672eb7fc
URL: https://source.winehq.org/git/website.git/?a=commit;h=bcae802c219cd9df61ca5…
Author: Alexandre Julliard <julliard(a)winehq.org>
Date: Fri Jun 4 21:32:44 2021 +0200
Wine release 6.10
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
news/en/2021060401.xml | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/news/en/2021060401.xml b/news/en/2021060401.xml
new file mode 100644
index 00000000..73a8b3c9
--- /dev/null
+++ b/news/en/2021060401.xml
@@ -0,0 +1,17 @@
+<news>
+<date>June 4, 2021</date>
+<title>Wine 6.10 Released</title>
+<body>
+<p> The Wine development release 6.10 is now available.</p>
+<p> <a href="{$root}/announce/6.10">What's new</a> in this release:
+<ul>
+ <li>Mono engine updated to version 6.2.0, with upstream updates.</li>
+ <li>Shell folders naming scheme follows recent Windows.</li>
+ <li>WinePulse library converted to PE.</li>
+ <li>More math functions from Musl in the C runtime.</li>
+ <li>Various bug fixes.</li>
+</ul>
+</p>
+<p>The source is <a href="//dl.winehq.org/wine/source/6.x/wine-6.10.tar.xz">available now</a>.
+Binary packages are in the process of being built, and will appear soon at their respective <a href="{$root}/download">download locations</a>.
+</p></body></news>