Rebase against 6790d825d1b2c41de73ffe5cb5df28c1d1cc8878.

This commit is contained in:
Sebastian Lackner 2015-11-25 21:57:01 +01:00
parent 67b1817720
commit 6f9e2dae7d
9 changed files with 69 additions and 145 deletions

View File

@ -34,7 +34,7 @@ Wine. All those differences are also documented on the
Included bug fixes and improvements
-----------------------------------
**Bug fixes and features in Wine Staging 1.8-rc2 [266]:**
**Bug fixes and features in Wine Staging 1.8-rc2 [263]:**
*Note: The following list only contains features and bug fixes which are not
yet available in vanilla Wine. They are removed from the list as soon as they
@ -47,7 +47,6 @@ for more details.*
* Add IHTMLLocation::hash property's getter implementation ([Wine Bug #32967](https://bugs.winehq.org/show_bug.cgi?id=32967))
* Add a ProfileList\<UserSID> registry subkey ([Wine Bug #15670](https://bugs.winehq.org/show_bug.cgi?id=15670))
* Add a stub driver for tdi.sys ([Wine Bug #35693](https://bugs.winehq.org/show_bug.cgi?id=35693))
* Add implementation for IDXGIOutput::GetDesc ([Wine Bug #32006](https://bugs.winehq.org/show_bug.cgi?id=32006))
* Add implementation for comctl32.PROPSHEET_InsertPage. ([Wine Bug #25625](https://bugs.winehq.org/show_bug.cgi?id=25625))
* Add implementation for mfplat.MFTEnum ([Wine Bug #39309](https://bugs.winehq.org/show_bug.cgi?id=39309))
* Add implementation for mfplat.MFTRegister ([Wine Bug #37811](https://bugs.winehq.org/show_bug.cgi?id=37811))
@ -103,7 +102,6 @@ for more details.*
* Avoid race-conditions in NtReadFile() operations with write watches.
* Avoid race-conditions of async WSARecv() operations with write watches.
* Avoid race-conditions with write watches in WS2_async_accept.
* Avseq crashes when multisampling is enabled ([Wine Bug #31998](https://bugs.winehq.org/show_bug.cgi?id=31998))
* Basic handling of write watches triggered while we're on the signal stack.
* Basic support for CUDA
* Black & White needs DXTn software decoding support ([Wine Bug #14939](https://bugs.winehq.org/show_bug.cgi?id=14939))
@ -179,7 +177,6 @@ for more details.*
* Implement FileNamesInformation class support for NtQueryDirectoryFile
* Implement FolderImpl_Items and stubbed FolderItems interface
* Implement ID3DXEffect::FindNextValidTechnique ([Wine Bug #34101](https://bugs.winehq.org/show_bug.cgi?id=34101))
* Implement IDXGIOutput::GetDesc
* Implement SystemHandleInformation info class
* Implement a Courier New replacement font ([Wine Bug #20456](https://bugs.winehq.org/show_bug.cgi?id=20456))
* Implement a Microsoft Yahei replacement font ([Wine Bug #13829](https://bugs.winehq.org/show_bug.cgi?id=13829))

View File

@ -1,53 +0,0 @@
From 297166d280007d0e4413ec5977497a848dda678b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 19 Dec 2014 21:20:21 +0100
Subject: dxgi: Implement IDXGIOutput::GetDesc.
---
dlls/dxgi/output.c | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/dlls/dxgi/output.c b/dlls/dxgi/output.c
index f4a5c29..158491e 100644
--- a/dlls/dxgi/output.c
+++ b/dlls/dxgi/output.c
@@ -114,9 +114,34 @@ static HRESULT STDMETHODCALLTYPE dxgi_output_GetParent(IDXGIOutput *iface,
static HRESULT STDMETHODCALLTYPE dxgi_output_GetDesc(IDXGIOutput *iface, DXGI_OUTPUT_DESC *desc)
{
- FIXME("iface %p, desc %p stub!\n", iface, desc);
+ struct dxgi_output *This = impl_from_IDXGIOutput(iface);
+ struct wined3d *wined3d;
+ MONITORINFOEXW monitor_info;
- return E_NOTIMPL;
+ FIXME("iface %p, desc %p semi-stub!\n", iface, desc);
+
+ if (!desc)
+ return DXGI_ERROR_INVALID_CALL;
+
+ wined3d = This->adapter->parent->wined3d;
+
+ wined3d_mutex_lock();
+ desc->Monitor = wined3d_get_adapter_monitor(wined3d, This->adapter->ordinal);
+ wined3d_mutex_unlock();
+
+ if (!desc->Monitor)
+ return DXGI_ERROR_INVALID_CALL;
+
+ monitor_info.cbSize = sizeof(monitor_info);
+ if (!GetMonitorInfoW(desc->Monitor, (MONITORINFO *)&monitor_info))
+ return DXGI_ERROR_INVALID_CALL;
+
+ memcpy(&desc->DeviceName, &monitor_info.szDevice, sizeof(desc->DeviceName));
+ memcpy(&desc->DesktopCoordinates, &monitor_info.rcMonitor, sizeof(RECT));
+ desc->AttachedToDesktop = TRUE;
+ desc->Rotation = DXGI_MODE_ROTATION_IDENTITY;
+
+ return S_OK;
}
static HRESULT STDMETHODCALLTYPE dxgi_output_GetDisplayModeList(IDXGIOutput *iface,
--
1.9.1

View File

@ -1,4 +0,0 @@
Fixes: Implement IDXGIOutput::GetDesc
Fixes: [31998] Avseq crashes when multisampling is enabled
Fixes: [32006] Add implementation for IDXGIOutput::GetDesc
Category: stable

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "3a6ac6055511b14a7e26ba0200f36da418f80723"
echo "6790d825d1b2c41de73ffe5cb5df28c1d1cc8878"
}
# Show version information
@ -132,7 +132,6 @@ patch_enable_all ()
enable_dsound_Fast_Mixer="$1"
enable_dxdiagn_Enumerate_DirectSound="$1"
enable_dxdiagn_GetChildContainer_Leaf_Nodes="$1"
enable_dxgi_GetDesc="$1"
enable_dxgi_MakeWindowAssociation="$1"
enable_dxva2_Video_Decoder="$1"
enable_fonts_Missing_Fonts="$1"
@ -505,9 +504,6 @@ patch_enable ()
dxdiagn-GetChildContainer_Leaf_Nodes)
enable_dxdiagn_GetChildContainer_Leaf_Nodes="$2"
;;
dxgi-GetDesc)
enable_dxgi_GetDesc="$2"
;;
dxgi-MakeWindowAssociation)
enable_dxgi_MakeWindowAssociation="$2"
;;
@ -1533,9 +1529,6 @@ if test "$enable_category_stable" -eq 1; then
if test "$enable_ddraw_EnumSurfaces" -gt 1; then
abort "Patchset ddraw-EnumSurfaces disabled, but category-stable depends on that."
fi
if test "$enable_dxgi_GetDesc" -gt 1; then
abort "Patchset dxgi-GetDesc disabled, but category-stable depends on that."
fi
if test "$enable_fonts_Missing_Fonts" -gt 1; then
abort "Patchset fonts-Missing_Fonts disabled, but category-stable depends on that."
fi
@ -1705,7 +1698,6 @@ if test "$enable_category_stable" -eq 1; then
enable_d3dx9_36_UpdateSkinnedMesh=1
enable_dbghelp_Debug_Symbols=1
enable_ddraw_EnumSurfaces=1
enable_dxgi_GetDesc=1
enable_fonts_Missing_Fonts=1
enable_gdi32_MaxPixelFormats=1
enable_kernel32_CompareStringEx=1
@ -3005,22 +2997,6 @@ if test "$enable_dxdiagn_GetChildContainer_Leaf_Nodes" -eq 1; then
) >> "$patchlist"
fi
# Patchset dxgi-GetDesc
# |
# | This patchset fixes the following Wine bugs:
# | * [#31998] Avseq crashes when multisampling is enabled
# | * [#32006] Add implementation for IDXGIOutput::GetDesc
# |
# | Modified files:
# | * dlls/dxgi/output.c
# |
if test "$enable_dxgi_GetDesc" -eq 1; then
patch_apply dxgi-GetDesc/0001-dxgi-Implement-IDXGIOutput-GetDesc.patch
(
echo '+ { "Michael Müller", "dxgi: Implement IDXGIOutput::GetDesc.", 1 },';
) >> "$patchlist"
fi
# Patchset dxgi-MakeWindowAssociation
# |
# | Modified files:
@ -5552,7 +5528,7 @@ fi
# | * [#39465] Enforce that surfaces are flushed after ReleaseDC
# |
# | Modified files:
# | * dlls/user32/painting.c, dlls/user32/win.c
# | * dlls/user32/painting.c
# |
if test "$enable_user32_Painting" -eq 1; then
patch_apply user32-Painting/0001-user32-Enforce-that-surfaces-are-flushed-after-Relea.patch

View File

@ -1,4 +1,4 @@
From c4a8e65a698c608dd491a0318116fa875b8362ba Mon Sep 17 00:00:00 2001
From 6d947439d536cbf2f0505113439577f346575707 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 27 Feb 2015 22:37:16 +0100
Subject: user32: Enforce that surfaces are flushed after ReleaseDC.
@ -8,11 +8,10 @@ the window doesn't update properly. Can be reproduced for example with:
https://www-user.tu-chemnitz.de/~heha/petzold/ch20c.htm
---
dlls/user32/painting.c | 1 +
dlls/user32/win.c | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
1 file changed, 1 insertion(+)
diff --git a/dlls/user32/painting.c b/dlls/user32/painting.c
index 5c1dc69..7be594f 100644
index 1dea98d..7f0e015 100644
--- a/dlls/user32/painting.c
+++ b/dlls/user32/painting.c
@@ -1116,6 +1116,7 @@ HDC WINAPI GetWindowDC( HWND hwnd )
@ -23,19 +22,6 @@ index 5c1dc69..7be594f 100644
return release_dc( hwnd, hdc, FALSE );
}
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index 0516193..5f99e43 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -598,7 +598,7 @@ void flush_window_surfaces( BOOL idle )
now = GetTickCount();
if (idle) last_idle = now;
/* if not idle, we only flush if there's evidence that the app never goes idle */
- else if ((int)(now - last_idle) < 1000) goto done;
+ else if ((int)(now - last_idle) < 100) goto done;
LIST_FOR_EACH_ENTRY( surface, &window_surfaces, struct window_surface, entry )
surface->funcs->flush( surface );
--
2.3.0
2.6.2

View File

@ -9769,7 +9769,7 @@ diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -5530,9 +5530,15 @@
@@ -5553,9 +5553,15 @@
DebugBreak();
}

View File

@ -1,4 +1,4 @@
From 0002cf1a076fddb1eecef95f1177ae6562cda785 Mon Sep 17 00:00:00 2001
From 9b2d1b5533f52cee4a9445ed83a17e16b6da8b85 Mon Sep 17 00:00:00 2001
From: Matt Durgavich <mattdurgavich@gmail.com>
Date: Sun, 30 Aug 2015 11:04:08 -0400
Subject: ws2_32: Proper WSACleanup implementation using wineserver function
@ -6,16 +6,16 @@ Subject: ws2_32: Proper WSACleanup implementation using wineserver function
---
dlls/ws2_32/socket.c | 22 ++++++++++++++++------
dlls/ws2_32/tests/sock.c | 5 ++---
dlls/ws2_32/tests/sock.c | 14 +++++++-------
server/protocol.def | 3 +++
server/sock.c | 9 +++++++++
4 files changed, 30 insertions(+), 9 deletions(-)
4 files changed, 35 insertions(+), 13 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index ca82ec9..f153de1 100644
index d31f0b4..ea45397 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -1469,13 +1469,23 @@ int WINAPI WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData)
@@ -1487,13 +1487,23 @@ int WINAPI WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData)
*/
INT WINAPI WSACleanup(void)
{
@ -46,34 +46,51 @@ index ca82ec9..f153de1 100644
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 2d14496..204b852 100644
index 3c66f7d..e3732a3 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -1119,20 +1119,19 @@ static void test_WithWSAStartup(void)
@@ -1149,18 +1149,17 @@ static void test_WithWSAStartup(void)
ok(res == 0, "WSAStartup() failed unexpectedly: %d\n", res);
/* show that sockets are destroyed automatically after WSACleanup */
- todo_wine {
SetLastError(0xdeadbeef);
res = send(src, "TEST", 4, 0);
res = send(pairs[0].src, "TEST", 4, 0);
error = WSAGetLastError();
ok(res == SOCKET_ERROR, "send should have failed\n");
+ todo_wine
ok(error == WSAENOTSOCK, "expected 10038, got %d\n", error);
- ok(error == WSAENOTSOCK, "expected 10038, got %d\n", error);
+ todo_wine ok(error == WSAENOTSOCK, "expected 10038, got %d\n", error);
SetLastError(0xdeadbeef);
res = closesocket(dst);
res = send(pairs[0].dst, "TEST", 4, 0);
error = WSAGetLastError();
ok(res == SOCKET_ERROR, "closesocket should have failed\n");
+ todo_wine
ok(error == WSAENOTSOCK, "expected 10038, got %d\n", error);
ok(res == SOCKET_ERROR, "send should have failed\n");
- ok(error == WSAENOTSOCK, "expected 10038, got %d\n", error);
+ todo_wine ok(error == WSAENOTSOCK, "expected 10038, got %d\n", error);
/* Check that all sockets were destroyed */
for (i = 0; i < socks; i++)
@@ -1180,13 +1179,14 @@ static void test_WithWSAStartup(void)
SetLastError(0xdeadbeef);
res = getsockname(sock, (struct sockaddr *)&saddr, &size);
error = WSAGetLastError();
- ok(res == SOCKET_ERROR, "Test[%d]: getsockname should have failed\n", i);
- ok(error == WSAENOTSOCK, "Test[%d]: expected 10038, got %d\n", i, error);
+ if (j == 2 || (j == 0 && i == 0))
+ todo_wine ok(res == SOCKET_ERROR, "Test[%d]: getsockname should have failed\n", i);
+ else
+ ok(res == SOCKET_ERROR, "Test[%d]: getsockname should have failed\n", i);
+ todo_wine ok(error == WSAENOTSOCK, "Test[%d]: expected 10038, got %d\n", i, error);
}
}
- }
-
closesocket(src);
closesocket(dst);
/* While wine is not fixed, close all sockets manually */
for (i = 0; i < socks; i++)
{
diff --git a/server/protocol.def b/server/protocol.def
index c313006..2dccb9a 100644
index aa37c66..058111a 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -942,6 +942,9 @@ struct rawinput_device
@ -87,10 +104,10 @@ index c313006..2dccb9a 100644
/* Set a handle information */
@REQ(set_handle_info)
diff --git a/server/sock.c b/server/sock.c
index 67d6416e..98f8176 100644
index 1767dea..090c753 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -1383,3 +1383,12 @@ DECL_HANDLER(get_socket_info)
@@ -1388,3 +1388,12 @@ DECL_HANDLER(get_socket_info)
release_object( &sock->obj );
}
@ -104,5 +121,5 @@ index 67d6416e..98f8176 100644
+ close_handle(current->process, sock);
+}
--
2.5.1
2.6.2

View File

@ -1,4 +1,4 @@
From e2d45538487646f7d17b35a351887fd94c8381f3 Mon Sep 17 00:00:00 2001
From 380a706bf10f26de9a1cd1a440b427f01f012285 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 6 Sep 2015 12:41:17 +0200
Subject: ws2_32: Invalidate client-side file descriptor cache in WSACleanup.
@ -7,15 +7,15 @@ Subject: ws2_32: Invalidate client-side file descriptor cache in WSACleanup.
dlls/ntdll/ntdll.spec | 1 +
dlls/ntdll/server.c | 24 ++++++++++++++++++++++++
dlls/ws2_32/socket.c | 1 +
dlls/ws2_32/tests/sock.c | 1 -
dlls/ws2_32/tests/sock.c | 5 +----
include/wine/server.h | 1 +
5 files changed, 27 insertions(+), 1 deletion(-)
5 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index ca3561d..d1205df 100644
index c3b6bf0..2b52562 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1446,6 +1446,7 @@
@@ -1458,6 +1458,7 @@
# Server interface
@ cdecl -norelay wine_server_call(ptr)
@ -24,7 +24,7 @@ index ca3561d..d1205df 100644
@ cdecl wine_server_handle_to_fd(long long ptr ptr)
@ cdecl wine_server_release_fd(long long)
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 95111ad..667c0b9 100644
index 356d631..381d5aa 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -915,6 +915,30 @@ int server_remove_fd_from_cache( HANDLE handle )
@ -59,10 +59,10 @@ index 95111ad..667c0b9 100644
*
* The returned unix_fd should be closed iff needs_close is non-zero.
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index f153de1..e06c42f 100644
index ea45397..c50d2b6 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -1477,6 +1477,7 @@ INT WINAPI WSACleanup(void)
@@ -1495,6 +1495,7 @@ INT WINAPI WSACleanup(void)
if (!--num_startup)
{
@ -71,17 +71,21 @@ index f153de1..e06c42f 100644
{
wine_server_call( req );
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index 204b852..b6e2a32 100644
index e3732a3..9ed71aa 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -1130,7 +1130,6 @@ static void test_WithWSAStartup(void)
res = closesocket(dst);
error = WSAGetLastError();
ok(res == SOCKET_ERROR, "closesocket should have failed\n");
- todo_wine
ok(error == WSAENOTSOCK, "expected 10038, got %d\n", error);
closesocket(src);
closesocket(dst);
@@ -1179,10 +1179,7 @@ static void test_WithWSAStartup(void)
SetLastError(0xdeadbeef);
res = getsockname(sock, (struct sockaddr *)&saddr, &size);
error = WSAGetLastError();
- if (j == 2 || (j == 0 && i == 0))
- todo_wine ok(res == SOCKET_ERROR, "Test[%d]: getsockname should have failed\n", i);
- else
- ok(res == SOCKET_ERROR, "Test[%d]: getsockname should have failed\n", i);
+ ok(res == SOCKET_ERROR, "Test[%d]: getsockname should have failed\n", i);
todo_wine ok(error == WSAENOTSOCK, "Test[%d]: expected 10038, got %d\n", i, error);
}
}
diff --git a/include/wine/server.h b/include/wine/server.h
index d573d1f..02d9c7b 100644
--- a/include/wine/server.h
@ -95,5 +99,5 @@ index d573d1f..02d9c7b 100644
/* do a server call and set the last error code */
static inline unsigned int wine_server_call_err( void *req_ptr )
--
2.5.1
2.6.2

View File

@ -3,6 +3,7 @@ wine-staging (1.8~rc2) unstable; urgency=low
context_apply_fbo_state" commit.
* Removed patch to set EAX to 0 in Basic_string_wchar_dtor (accepted
upstream).
* Removed patch for IDXGIOutput::GetDesc (fixed upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Wed, 25 Nov 2015 20:21:46 +0100
wine-staging (1.8~rc1) unstable; urgency=low