mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Removed various patches (accepted upstream).
This commit is contained in:
parent
ab87b19a87
commit
52e3343bbb
@ -199,7 +199,7 @@ for more details.*
|
||||
* Prevent window managers from grouping all wine programs together ([Wine Bug #32699](https://bugs.winehq.org/show_bug.cgi?id=32699))
|
||||
* Process APC calls before starting process
|
||||
* Process Hacker 2.x needs ntoskrnl.ProbeForRead ([Wine Bug #38103](https://bugs.winehq.org/show_bug.cgi?id=38103))
|
||||
* Properly handle closing sockets during a select call ([Wine Bug #38399](https://bugs.winehq.org/show_bug.cgi?id=38399))
|
||||
* ~~Properly handle closing sockets during a select call~~ ([Wine Bug #38399](https://bugs.winehq.org/show_bug.cgi?id=38399))
|
||||
* Python PIP needs better NtQueryInformationJobObject stub
|
||||
* Reduced SetTimer minimum value from 10 ms to 5 ms (improves Silverlight framerates)
|
||||
* Reset device state in SysKeyboard*Impl_Acquire ([Wine Bug #11607](https://bugs.winehq.org/show_bug.cgi?id=11607))
|
||||
@ -207,7 +207,7 @@ for more details.*
|
||||
* Return correct IMediaSeeking stream positions in quartz ([Wine Bug #23174](https://bugs.winehq.org/show_bug.cgi?id=23174))
|
||||
* Return correct device type for cd devices without medium
|
||||
* Return correct values for GetThreadTimes function ([Wine Bug #20230](https://bugs.winehq.org/show_bug.cgi?id=20230))
|
||||
* Return failure in NtProtectVirtualMemory when last argument is omitted ([Wine Bug #38495](https://bugs.winehq.org/show_bug.cgi?id=38495))
|
||||
* ~~Return failure in NtProtectVirtualMemory when last argument is omitted~~ ([Wine Bug #38495](https://bugs.winehq.org/show_bug.cgi?id=38495))
|
||||
* SO_CONNECT_TIME returns the appropriate time
|
||||
* Scrolling causes mouse and screen to lock in Call to Power II ([Wine Bug #34559](https://bugs.winehq.org/show_bug.cgi?id=34559))
|
||||
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
|
||||
|
5
debian/changelog
vendored
5
debian/changelog
vendored
@ -1,8 +1,9 @@
|
||||
wine-staging (1.7.43) UNRELEASED; urgency=low
|
||||
* Disable patchset shell32-Default_Folder_ACLs (fixes Wine Staging Bug #265).
|
||||
* Updated patch to calculate msvcrt exponential math operations with higher precision (fixes Wine Staging Bug #268).
|
||||
* Removed patch to use lockfree implementation for FD cache.
|
||||
* Partially removed patches to test behaviour of VirtualProtect / NtProtectVirtualMemory.
|
||||
* Removed patch to use lockfree implementation for FD cache (accepted upstream).
|
||||
* Removed patch to properly handle closing sockets during a select call (accepted upstream).
|
||||
* Removed patches to fix behaviour of VirtualProtect / NtProtectVirtualMemory (accepted upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 04 May 2015 19:02:02 +0200
|
||||
|
||||
wine-staging (1.7.42) unstable; urgency=low
|
||||
|
@ -1,60 +0,0 @@
|
||||
From eb6ad80caabe5a150874986f52461a2fc2a2c01a Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 2 May 2015 18:46:38 +0200
|
||||
Subject: ntdll: Return failure in NtProtectVirtualMemory when last argument is
|
||||
omitted.
|
||||
|
||||
---
|
||||
dlls/kernel32/tests/virtual.c | 5 -----
|
||||
dlls/ntdll/virtual.c | 3 +++
|
||||
2 files changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c
|
||||
index 2dea156..4f50df8 100644
|
||||
--- a/dlls/kernel32/tests/virtual.c
|
||||
+++ b/dlls/kernel32/tests/virtual.c
|
||||
@@ -2492,27 +2492,22 @@ static void test_VirtualProtect(void)
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = VirtualProtect(base, si.dwPageSize, PAGE_READONLY, NULL);
|
||||
- todo_wine
|
||||
ok(!ret, "VirtualProtect should fail\n");
|
||||
- todo_wine
|
||||
ok(GetLastError() == ERROR_NOACCESS, "expected ERROR_NOACCESS, got %d\n", GetLastError());
|
||||
old_prot = 0xdeadbeef;
|
||||
ret = VirtualProtect(base, si.dwPageSize, PAGE_NOACCESS, &old_prot);
|
||||
ok(ret, "VirtualProtect failed %d\n", GetLastError());
|
||||
- todo_wine
|
||||
ok(old_prot == PAGE_NOACCESS, "got %#x != expected PAGE_NOACCESS\n", old_prot);
|
||||
|
||||
addr = base;
|
||||
size = si.dwPageSize;
|
||||
status = pNtProtectVirtualMemory(GetCurrentProcess(), &addr, &size, PAGE_READONLY, NULL);
|
||||
- todo_wine
|
||||
ok(status == STATUS_ACCESS_VIOLATION, "NtProtectVirtualMemory should fail, got %08x\n", status);
|
||||
addr = base;
|
||||
size = si.dwPageSize;
|
||||
old_prot = 0xdeadbeef;
|
||||
status = pNtProtectVirtualMemory(GetCurrentProcess(), &addr, &size, PAGE_NOACCESS, &old_prot);
|
||||
ok(status == STATUS_SUCCESS, "NtProtectVirtualMemory should succeed, got %08x\n", status);
|
||||
- todo_wine
|
||||
ok(old_prot == PAGE_NOACCESS, "got %#x != expected PAGE_NOACCESS\n", old_prot);
|
||||
|
||||
for (i = 0; i < sizeof(td)/sizeof(td[0]); i++)
|
||||
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
|
||||
index 9d29c33..0629816 100644
|
||||
--- a/dlls/ntdll/virtual.c
|
||||
+++ b/dlls/ntdll/virtual.c
|
||||
@@ -2164,6 +2164,9 @@ NTSTATUS WINAPI NtProtectVirtualMemory( HANDLE process, PVOID *addr_ptr, SIZE_T
|
||||
|
||||
TRACE("%p %p %08lx %08x\n", process, addr, size, new_prot );
|
||||
|
||||
+ if (!old_prot)
|
||||
+ return STATUS_ACCESS_VIOLATION;
|
||||
+
|
||||
if (process != NtCurrentProcess())
|
||||
{
|
||||
apc_call_t call;
|
||||
--
|
||||
2.3.7
|
||||
|
@ -1 +0,0 @@
|
||||
Fixes: [38495] Return failure in NtProtectVirtualMemory when last argument is omitted
|
@ -1,2 +1 @@
|
||||
Fixes: [37338] Support for NtQuerySection
|
||||
Depends: ntdll-NtProtectVirtualMemory
|
||||
|
@ -153,7 +153,6 @@ patch_enable_all ()
|
||||
enable_ntdll_Heap_FreeLists="$1"
|
||||
enable_ntdll_Junction_Points="$1"
|
||||
enable_ntdll_LZNT1_Compression="$1"
|
||||
enable_ntdll_NtProtectVirtualMemory="$1"
|
||||
enable_ntdll_NtQuerySection="$1"
|
||||
enable_ntdll_NtSetLdtEntries="$1"
|
||||
enable_ntdll_Pipe_SpecialCharacters="$1"
|
||||
@ -254,7 +253,6 @@ patch_enable_all ()
|
||||
enable_wpcap_Dynamic_Linking="$1"
|
||||
enable_ws2_32_APC_Performance="$1"
|
||||
enable_ws2_32_Connect_Time="$1"
|
||||
enable_ws2_32_Select="$1"
|
||||
enable_ws2_32_TransmitFile="$1"
|
||||
enable_ws2_32_WriteWatches="$1"
|
||||
enable_ws2_32_getaddrinfo="$1"
|
||||
@ -538,9 +536,6 @@ patch_enable ()
|
||||
ntdll-LZNT1_Compression)
|
||||
enable_ntdll_LZNT1_Compression="$2"
|
||||
;;
|
||||
ntdll-NtProtectVirtualMemory)
|
||||
enable_ntdll_NtProtectVirtualMemory="$2"
|
||||
;;
|
||||
ntdll-NtQuerySection)
|
||||
enable_ntdll_NtQuerySection="$2"
|
||||
;;
|
||||
@ -841,9 +836,6 @@ patch_enable ()
|
||||
ws2_32-Connect_Time)
|
||||
enable_ws2_32_Connect_Time="$2"
|
||||
;;
|
||||
ws2_32-Select)
|
||||
enable_ws2_32_Select="$2"
|
||||
;;
|
||||
ws2_32-TransmitFile)
|
||||
enable_ws2_32_TransmitFile="$2"
|
||||
;;
|
||||
@ -1179,9 +1171,6 @@ if test "$enable_category_stable" -eq 1; then
|
||||
if test "$enable_ws2_32_Connect_Time" -gt 1; then
|
||||
abort "Patchset ws2_32-Connect_Time disabled, but category-stable depends on that."
|
||||
fi
|
||||
if test "$enable_ws2_32_Select" -gt 1; then
|
||||
abort "Patchset ws2_32-Select disabled, but category-stable depends on that."
|
||||
fi
|
||||
enable_Staging=1
|
||||
enable_configure_Absolute_RPATH=1
|
||||
enable_d3d9_Surface_Refcount=1
|
||||
@ -1217,14 +1206,6 @@ if test "$enable_category_stable" -eq 1; then
|
||||
enable_wininet_ParseX509EncodedCertificateForListBoxEntry=1
|
||||
enable_winmm_Delay_Import_Depends=1
|
||||
enable_ws2_32_Connect_Time=1
|
||||
enable_ws2_32_Select=1
|
||||
fi
|
||||
|
||||
if test "$enable_winedevice_Fix_Relocation" -eq 1; then
|
||||
if test "$enable_ntdll_NtProtectVirtualMemory" -gt 1; then
|
||||
abort "Patchset ntdll-NtProtectVirtualMemory disabled, but winedevice-Fix_Relocation depends on that."
|
||||
fi
|
||||
enable_ntdll_NtProtectVirtualMemory=1
|
||||
fi
|
||||
|
||||
if test "$enable_shell32_SHFileOperation" -eq 1; then
|
||||
@ -1346,13 +1327,6 @@ if test "$enable_ntdll_RtlIpStringToAddress" -eq 1; then
|
||||
enable_ntdll_LZNT1_Compression=1
|
||||
fi
|
||||
|
||||
if test "$enable_ntdll_NtQuerySection" -eq 1; then
|
||||
if test "$enable_ntdll_NtProtectVirtualMemory" -gt 1; then
|
||||
abort "Patchset ntdll-NtProtectVirtualMemory disabled, but ntdll-NtQuerySection depends on that."
|
||||
fi
|
||||
enable_ntdll_NtProtectVirtualMemory=1
|
||||
fi
|
||||
|
||||
if test "$enable_ntdll_Junction_Points" -eq 1; then
|
||||
if test "$enable_ntdll_Fix_Free" -gt 1; then
|
||||
abort "Patchset ntdll-Fix_Free disabled, but ntdll-Junction_Points depends on that."
|
||||
@ -1625,6 +1599,23 @@ if test "$enable_advapi32_ImpersonateAnonymousToken" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset server-Misc_ACL
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#15980] GetSecurityInfo returns NULL DACL for process object
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c
|
||||
# |
|
||||
if test "$enable_server_Misc_ACL" -eq 1; then
|
||||
patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch
|
||||
patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch
|
||||
(
|
||||
echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },';
|
||||
echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset server-CreateProcess_ACLs
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@ -1644,23 +1635,6 @@ if test "$enable_server_CreateProcess_ACLs" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset server-Misc_ACL
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#15980] GetSecurityInfo returns NULL DACL for process object
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/advapi32/tests/security.c, server/process.c, server/security.h, server/token.c
|
||||
# |
|
||||
if test "$enable_server_Misc_ACL" -eq 1; then
|
||||
patch_apply server-Misc_ACL/0001-server-Add-default-security-descriptor-ownership-for.patch
|
||||
patch_apply server-Misc_ACL/0002-server-Add-default-security-descriptor-DACL-for-proc.patch
|
||||
(
|
||||
echo '+ { "Erich E. Hoover", "server: Add default security descriptor ownership for processes.", 1 },';
|
||||
echo '+ { "Erich E. Hoover", "server: Add default security descriptor DACL for processes.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset advapi32-LsaLookupSids
|
||||
# |
|
||||
# | Modified files:
|
||||
@ -3611,21 +3585,6 @@ if test "$enable_ntdll_LZNT1_Compression" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ntdll-NtProtectVirtualMemory
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#38495] Return failure in NtProtectVirtualMemory when last argument is omitted
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/kernel32/tests/virtual.c, dlls/ntdll/virtual.c
|
||||
# |
|
||||
if test "$enable_ntdll_NtProtectVirtualMemory" -eq 1; then
|
||||
patch_apply ntdll-NtProtectVirtualMemory/0001-ntdll-Return-failure-in-NtProtectVirtualMemory-when-.patch
|
||||
(
|
||||
echo '+ { "Sebastian Lackner", "ntdll: Return failure in NtProtectVirtualMemory when last argument is omitted.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ntdll-NtQuerySection
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@ -4724,16 +4683,12 @@ fi
|
||||
# | * [#34517] Add support for wbemprox Win32_SystemEnclosure table
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/wbemprox/builtin.c, dlls/wbemprox/table.c, dlls/wbemprox/tests/query.c
|
||||
# | * dlls/wbemprox/builtin.c, dlls/wbemprox/table.c
|
||||
# |
|
||||
if test "$enable_wbemprox_Win32_SystemEnclosure" -eq 1; then
|
||||
patch_apply wbemprox-Win32_SystemEnclosure/0001-wbemprox-tests-Actually-test-the-return-value-of-IEn.patch
|
||||
patch_apply wbemprox-Win32_SystemEnclosure/0002-wbemprox-tests-Fix-memory-leak-when-tests-are-skippe.patch
|
||||
patch_apply wbemprox-Win32_SystemEnclosure/0003-wbemprox-Fix-handling-of-arrays-as-query-results.patch
|
||||
patch_apply wbemprox-Win32_SystemEnclosure/0004-wbemprox-Add-support-for-Win32_SystemEnclosure.patch
|
||||
patch_apply wbemprox-Win32_SystemEnclosure/0001-wbemprox-Fix-handling-of-arrays-as-query-results.patch
|
||||
patch_apply wbemprox-Win32_SystemEnclosure/0002-wbemprox-Add-support-for-Win32_SystemEnclosure.patch
|
||||
(
|
||||
echo '+ { "Sebastian Lackner", "wbemprox/tests: Actually test the return value of IEnumWbemClassObject_Next.", 1 },';
|
||||
echo '+ { "Sebastian Lackner", "wbemprox/tests: Fix memory leak when tests are skipped.", 1 },';
|
||||
echo '+ { "Sebastian Lackner", "wbemprox: Fix handling of arrays as query results.", 1 },';
|
||||
echo '+ { "Michael Müller", "wbemprox: Add support for Win32_SystemEnclosure.", 1 },';
|
||||
) >> "$patchlist"
|
||||
@ -5170,23 +5125,6 @@ if test "$enable_ws2_32_Connect_Time" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ws2_32-Select
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#38399] Properly handle closing sockets during a select call
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/ntdll/ntdll.spec, dlls/ntdll/server.c, dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, include/wine/server.h
|
||||
# |
|
||||
if test "$enable_ws2_32_Select" -eq 1; then
|
||||
patch_apply ws2_32-Select/0001-ntdll-Introduce-a-helper-function-to-check-for-exist.patch
|
||||
patch_apply ws2_32-Select/0002-ws2_32-Properly-handle-closing-sockets-during-a-sele.patch
|
||||
(
|
||||
echo '+ { "Sebastian Lackner", "ntdll: Introduce a helper function to check for existance of server handles.", 1 },';
|
||||
echo '+ { "Sebastian Lackner", "ws2_32: Properly handle closing sockets during a select call.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset ws2_32-TransmitFile
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
@ -1,26 +0,0 @@
|
||||
From edbc92c9930ae5778ddee9426218f1b4c7ee10bb Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 17 Apr 2015 06:49:55 +0200
|
||||
Subject: wbemprox/tests: Actually test the return value of
|
||||
IEnumWbemClassObject_Next.
|
||||
|
||||
---
|
||||
dlls/wbemprox/tests/query.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c
|
||||
index 7e031d2..88e8fb4 100644
|
||||
--- a/dlls/wbemprox/tests/query.c
|
||||
+++ b/dlls/wbemprox/tests/query.c
|
||||
@@ -382,7 +382,7 @@ static void test_Win32_ComputerSystem( IWbemServices *services )
|
||||
return;
|
||||
}
|
||||
|
||||
- IEnumWbemClassObject_Next( result, 10000, 1, &service, &count );
|
||||
+ hr = IEnumWbemClassObject_Next( result, 10000, 1, &service, &count );
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
|
||||
type = 0xdeadbeef;
|
||||
--
|
||||
2.3.5
|
||||
|
@ -1,58 +0,0 @@
|
||||
From 2534d6561452c812cf539c2ca81c464bee83521d Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 17 Apr 2015 07:58:06 +0200
|
||||
Subject: wbemprox/tests: Fix memory leak when tests are skipped.
|
||||
|
||||
---
|
||||
dlls/wbemprox/tests/query.c | 8 +++++---
|
||||
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/wbemprox/tests/query.c b/dlls/wbemprox/tests/query.c
|
||||
index 88e8fb4..02774db 100644
|
||||
--- a/dlls/wbemprox/tests/query.c
|
||||
+++ b/dlls/wbemprox/tests/query.c
|
||||
@@ -158,7 +158,7 @@ static void test_Win32_Service( IWbemServices *services )
|
||||
if (hr != S_OK)
|
||||
{
|
||||
win_skip( "Win32_Service not available\n" );
|
||||
- return;
|
||||
+ goto out;
|
||||
}
|
||||
type = 0xdeadbeef;
|
||||
VariantInit( &state );
|
||||
@@ -232,6 +232,7 @@ static void test_Win32_Service( IWbemServices *services )
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
if (service) IWbemClassObject_Release( service );
|
||||
|
||||
+out:
|
||||
SysFreeString( empty );
|
||||
SysFreeString( class );
|
||||
}
|
||||
@@ -372,14 +373,14 @@ static void test_Win32_ComputerSystem( IWbemServices *services )
|
||||
if (!compname[0] || !username[0])
|
||||
{
|
||||
skip( "Failed to get user or computer name\n" );
|
||||
- return;
|
||||
+ goto out;
|
||||
}
|
||||
|
||||
hr = IWbemServices_ExecQuery( services, wql, query, 0, NULL, &result );
|
||||
if (hr != S_OK)
|
||||
{
|
||||
win_skip( "Win32_ComputerSystem not available\n" );
|
||||
- return;
|
||||
+ goto out;
|
||||
}
|
||||
|
||||
hr = IEnumWbemClassObject_Next( result, 10000, 1, &service, &count );
|
||||
@@ -405,6 +406,7 @@ static void test_Win32_ComputerSystem( IWbemServices *services )
|
||||
|
||||
IWbemClassObject_Release( service );
|
||||
IEnumWbemClassObject_Release( result );
|
||||
+out:
|
||||
SysFreeString( query );
|
||||
SysFreeString( wql );
|
||||
}
|
||||
--
|
||||
2.3.5
|
||||
|
@ -1,19 +1,19 @@
|
||||
From 17105a18c3e8a754e5158ff99e8ce367aed113ac Mon Sep 17 00:00:00 2001
|
||||
From 3c2152778b13105e423a33889692c3b12f58653b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Sat, 6 Jul 2013 19:18:48 +0200
|
||||
Subject: wined3d: Poll queries automatically in the CS
|
||||
|
||||
---
|
||||
dlls/wined3d/cs.c | 76 ++++++--------
|
||||
dlls/wined3d/query.c | 225 ++++++++++++++++++++++++++---------------
|
||||
dlls/wined3d/query.c | 221 ++++++++++++++++++++++++++---------------
|
||||
dlls/wined3d/wined3d_private.h | 7 +-
|
||||
3 files changed, 180 insertions(+), 128 deletions(-)
|
||||
3 files changed, 178 insertions(+), 126 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
|
||||
index d182150..cb969a0 100644
|
||||
index d97ef5b..8256707 100644
|
||||
--- a/dlls/wined3d/cs.c
|
||||
+++ b/dlls/wined3d/cs.c
|
||||
@@ -68,7 +68,6 @@ enum wined3d_cs_op
|
||||
@@ -69,7 +69,6 @@ enum wined3d_cs_op
|
||||
WINED3D_CS_OP_RESOURCE_MAP,
|
||||
WINED3D_CS_OP_RESOURCE_UNMAP,
|
||||
WINED3D_CS_OP_QUERY_ISSUE,
|
||||
@ -21,7 +21,7 @@ index d182150..cb969a0 100644
|
||||
WINED3D_CS_OP_STOP,
|
||||
};
|
||||
|
||||
@@ -373,16 +372,6 @@ struct wined3d_cs_query_issue
|
||||
@@ -383,16 +382,6 @@ struct wined3d_cs_query_issue
|
||||
DWORD flags;
|
||||
};
|
||||
|
||||
@ -38,7 +38,7 @@ index d182150..cb969a0 100644
|
||||
static void wined3d_cs_submit(struct wined3d_cs *cs, size_t size)
|
||||
{
|
||||
LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1);
|
||||
@@ -1712,8 +1701,9 @@ static UINT wined3d_cs_exec_query_issue(struct wined3d_cs *cs, const void *data)
|
||||
@@ -1822,8 +1811,9 @@ static UINT wined3d_cs_exec_query_issue(struct wined3d_cs *cs, const void *data)
|
||||
|
||||
query->query_ops->query_issue(query, op->flags);
|
||||
|
||||
@ -50,7 +50,7 @@ index d182150..cb969a0 100644
|
||||
|
||||
return sizeof(*op);
|
||||
}
|
||||
@@ -1730,37 +1720,6 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
|
||||
@@ -1840,37 +1830,6 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
|
||||
cs->ops->submit(cs, sizeof(*op));
|
||||
}
|
||||
|
||||
@ -88,7 +88,7 @@ index d182150..cb969a0 100644
|
||||
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
|
||||
{
|
||||
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
|
||||
@@ -1807,7 +1766,6 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
|
||||
@@ -1918,7 +1877,6 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
|
||||
/* WINED3D_CS_OP_RESOURCE_MAP */ wined3d_cs_exec_resource_map,
|
||||
/* WINED3D_CS_OP_RESOURCE_UNMAP */ wined3d_cs_exec_resource_unmap,
|
||||
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
|
||||
@ -96,7 +96,7 @@ index d182150..cb969a0 100644
|
||||
};
|
||||
|
||||
static void *wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size)
|
||||
@@ -1922,17 +1880,45 @@ void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs,
|
||||
@@ -2033,17 +1991,45 @@ void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs,
|
||||
wined3d_surface_incref(cs->onscreen_depth_stencil);
|
||||
}
|
||||
|
||||
@ -143,7 +143,7 @@ index d182150..cb969a0 100644
|
||||
{
|
||||
continue;
|
||||
diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
|
||||
index 098197b..dffad6f 100644
|
||||
index 9bdb35e..9f1f5ad 100644
|
||||
--- a/dlls/wined3d/query.c
|
||||
+++ b/dlls/wined3d/query.c
|
||||
@@ -241,6 +241,15 @@ ULONG CDECL wined3d_query_decref(struct wined3d_query *query)
|
||||
@ -406,10 +406,10 @@ index 098197b..dffad6f 100644
|
||||
GLuint available;
|
||||
GLuint64 timestamp;
|
||||
- HRESULT res;
|
||||
-
|
||||
- TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
|
||||
+ BOOL ret;
|
||||
|
||||
- TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
|
||||
-
|
||||
- if (!tq->context)
|
||||
- query->state = QUERY_CREATED;
|
||||
-
|
||||
@ -468,24 +468,14 @@ index 098197b..dffad6f 100644
|
||||
}
|
||||
|
||||
static void wined3d_timestamp_query_ops_issue(struct wined3d_query *query, DWORD flags)
|
||||
@@ -657,15 +709,14 @@ static HRESULT wined3d_timestamp_disjoint_query_ops_get_data(struct wined3d_quer
|
||||
@@ -657,7 +709,6 @@ static HRESULT wined3d_timestamp_disjoint_query_ops_get_data(struct wined3d_quer
|
||||
void *data, DWORD size, DWORD flags)
|
||||
{
|
||||
TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
|
||||
-
|
||||
if (query->type == WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT)
|
||||
{
|
||||
static const struct wined3d_query_data_timestamp_disjoint disjoint_data = {FALSE, 1000 * 1000 * 1000};
|
||||
|
||||
if (query->state == QUERY_BUILDING)
|
||||
{
|
||||
- TRACE("Query is building, returning S_FALSE.\n");
|
||||
- return S_FALSE;
|
||||
+ TRACE("Query is building, returning S_FALSE.\n");
|
||||
+ return S_FALSE;
|
||||
}
|
||||
|
||||
fill_query_data(data, size, &disjoint_data, sizeof(disjoint_data));
|
||||
static const struct wined3d_query_data_timestamp_disjoint disjoint_data = {1000 * 1000 * 1000, FALSE};
|
||||
@@ -679,6 +730,11 @@ static HRESULT wined3d_timestamp_disjoint_query_ops_get_data(struct wined3d_quer
|
||||
return S_OK;
|
||||
}
|
||||
@ -536,10 +526,10 @@ index 098197b..dffad6f 100644
|
||||
return WINED3D_OK;
|
||||
}
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index cabc227..936ed73 100644
|
||||
index 56d9b0c..4c4ee51 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -1079,6 +1079,7 @@ struct wined3d_occlusion_query
|
||||
@@ -1090,6 +1090,7 @@ struct wined3d_occlusion_query
|
||||
struct list entry;
|
||||
GLuint id;
|
||||
struct wined3d_context *context;
|
||||
@ -547,7 +537,7 @@ index cabc227..936ed73 100644
|
||||
};
|
||||
|
||||
union wined3d_gl_query_object
|
||||
@@ -1114,6 +1115,7 @@ struct wined3d_timestamp_query
|
||||
@@ -1125,6 +1126,7 @@ struct wined3d_timestamp_query
|
||||
struct list entry;
|
||||
GLuint id;
|
||||
struct wined3d_context *context;
|
||||
@ -555,7 +545,7 @@ index cabc227..936ed73 100644
|
||||
};
|
||||
|
||||
void context_alloc_timestamp_query(struct wined3d_context *context, struct wined3d_timestamp_query *query) DECLSPEC_HIDDEN;
|
||||
@@ -2586,6 +2588,7 @@ struct wined3d_cs
|
||||
@@ -2610,6 +2612,7 @@ struct wined3d_cs
|
||||
struct wined3d_cs_queue queue;
|
||||
|
||||
LONG pending_presents;
|
||||
@ -563,7 +553,7 @@ index cabc227..936ed73 100644
|
||||
};
|
||||
|
||||
struct wined3d_cs *wined3d_cs_create(struct wined3d_device *device) DECLSPEC_HIDDEN;
|
||||
@@ -2679,6 +2682,7 @@ enum query_state {
|
||||
@@ -2705,6 +2708,7 @@ enum query_state {
|
||||
struct wined3d_query_ops
|
||||
{
|
||||
HRESULT (*query_get_data)(struct wined3d_query *query, void *data, DWORD data_size, DWORD flags);
|
||||
@ -571,7 +561,7 @@ index cabc227..936ed73 100644
|
||||
void (*query_issue)(struct wined3d_query *query, DWORD flags);
|
||||
};
|
||||
|
||||
@@ -2694,7 +2698,8 @@ struct wined3d_query
|
||||
@@ -2720,7 +2724,8 @@ struct wined3d_query
|
||||
DWORD data_size;
|
||||
void *extendedData;
|
||||
|
||||
@ -582,5 +572,5 @@ index cabc227..936ed73 100644
|
||||
|
||||
/* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other
|
||||
--
|
||||
2.2.2
|
||||
2.3.7
|
||||
|
||||
|
@ -2773,10 +2773,10 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
@@ -711,6 +948,26 @@
|
||||
{
|
||||
TRACE("Query is building, returning S_FALSE.\n");
|
||||
return S_FALSE;
|
||||
@@ -703,6 +940,18 @@
|
||||
void *data, DWORD size, DWORD flags)
|
||||
{
|
||||
TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
|
||||
+#else /* STAGING_CSMT */
|
||||
+ query->state = QUERY_SIGNALLED;
|
||||
+
|
||||
@ -2788,19 +2788,11 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
|
||||
+{
|
||||
+ TRACE("query %p, data %p, size %#x, flags %#x.\n", query, data, size, flags);
|
||||
+
|
||||
+ if (query->type == WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT)
|
||||
+ {
|
||||
+ static const struct wined3d_query_data_timestamp_disjoint disjoint_data = {FALSE, 1000 * 1000 * 1000};
|
||||
+
|
||||
+ if (query->state == QUERY_BUILDING)
|
||||
+ {
|
||||
+ TRACE("Query is building, returning S_FALSE.\n");
|
||||
+ return S_FALSE;
|
||||
+#endif /* STAGING_CSMT */
|
||||
}
|
||||
|
||||
fill_query_data(data, size, &disjoint_data, sizeof(disjoint_data));
|
||||
@@ -724,6 +981,7 @@
|
||||
if (query->type == WINED3D_QUERY_TYPE_TIMESTAMP_DISJOINT)
|
||||
{
|
||||
static const struct wined3d_query_data_timestamp_disjoint disjoint_data = {1000 * 1000 * 1000, FALSE};
|
||||
@@ -724,6 +973,7 @@
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@ -2808,7 +2800,7 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
|
||||
static BOOL wined3d_timestamp_disjoint_query_ops_poll(struct wined3d_query *query)
|
||||
{
|
||||
return TRUE;
|
||||
@@ -760,6 +1018,41 @@
|
||||
@@ -760,6 +1010,41 @@
|
||||
{
|
||||
wined3d_timestamp_disjoint_query_ops_get_data,
|
||||
wined3d_timestamp_disjoint_query_ops_poll,
|
||||
@ -2850,7 +2842,7 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
|
||||
wined3d_timestamp_disjoint_query_ops_issue,
|
||||
};
|
||||
|
||||
@@ -781,6 +1074,7 @@
|
||||
@@ -781,6 +1066,7 @@
|
||||
}
|
||||
query->query_ops = &occlusion_query_ops;
|
||||
query->data_size = sizeof(DWORD);
|
||||
@ -2858,7 +2850,7 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
|
||||
query->extendedData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
|
||||
sizeof(struct wined3d_occlusion_query));
|
||||
if (!query->extendedData)
|
||||
@@ -788,6 +1082,15 @@
|
||||
@@ -788,6 +1074,15 @@
|
||||
ERR("Failed to allocate occlusion query extended data.\n");
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
@ -2874,7 +2866,7 @@ diff --git a/dlls/wined3d/query.c b/dlls/wined3d/query.c
|
||||
break;
|
||||
|
||||
case WINED3D_QUERY_TYPE_EVENT:
|
||||
@@ -860,7 +1163,9 @@
|
||||
@@ -860,7 +1155,9 @@
|
||||
query->state = QUERY_CREATED;
|
||||
query->device = device;
|
||||
query->ref = 1;
|
||||
|
@ -1,2 +1 @@
|
||||
Fixes: [28254] Fix crash of winedevice when relocation entry crosses page boundary
|
||||
Depends: ntdll-NtProtectVirtualMemory
|
||||
|
@ -1,99 +0,0 @@
|
||||
From b474b9b40dc95c477890ef0b1407e647b46a22d0 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 30 Apr 2015 05:43:21 +0200
|
||||
Subject: ntdll: Introduce a helper function to check for existance of server
|
||||
handles.
|
||||
|
||||
---
|
||||
dlls/ntdll/ntdll.spec | 1 +
|
||||
dlls/ntdll/server.c | 21 +++++++++++++++++++++
|
||||
dlls/ws2_32/socket.c | 13 ++++---------
|
||||
include/wine/server.h | 1 +
|
||||
4 files changed, 27 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
|
||||
index 28165ef..0c73380 100644
|
||||
--- a/dlls/ntdll/ntdll.spec
|
||||
+++ b/dlls/ntdll/ntdll.spec
|
||||
@@ -1417,6 +1417,7 @@
|
||||
# Server interface
|
||||
@ cdecl -norelay wine_server_call(ptr)
|
||||
@ cdecl wine_server_fd_to_handle(long long long ptr)
|
||||
+@ cdecl wine_server_handle_exists(long long)
|
||||
@ cdecl wine_server_handle_to_fd(long long ptr ptr)
|
||||
@ cdecl wine_server_release_fd(long long)
|
||||
@ cdecl wine_server_send_fd(long)
|
||||
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
|
||||
index 69d01be..03f85ff 100644
|
||||
--- a/dlls/ntdll/server.c
|
||||
+++ b/dlls/ntdll/server.c
|
||||
@@ -974,6 +974,27 @@ int CDECL wine_server_fd_to_handle( int fd, unsigned int access, unsigned int at
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
+ * wine_server_handle_exists (NTDLL.@)
|
||||
+ *
|
||||
+ * Checks if a file handle exists (without duplicating it).
|
||||
+ *
|
||||
+ * PARAMS
|
||||
+ * handle [I] Wine file handle.
|
||||
+ * access [I] Win32 file access rights requested.
|
||||
+ *
|
||||
+ * RETURNS
|
||||
+ * NTSTATUS code
|
||||
+ */
|
||||
+int CDECL wine_server_handle_exists( HANDLE handle, unsigned int access )
|
||||
+{
|
||||
+ int unix_fd, needs_close, ret;
|
||||
+ ret = server_get_unix_fd( handle, access, &unix_fd, &needs_close, NULL, NULL );
|
||||
+ if (!ret && needs_close) close( unix_fd );
|
||||
+ return !ret;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+/***********************************************************************
|
||||
* wine_server_handle_to_fd (NTDLL.@)
|
||||
*
|
||||
* Retrieve the file descriptor corresponding to a file handle.
|
||||
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|
||||
index ef43186..22dd084 100644
|
||||
--- a/dlls/ws2_32/socket.c
|
||||
+++ b/dlls/ws2_32/socket.c
|
||||
@@ -2940,18 +2940,13 @@ int WINAPI WS_bind(SOCKET s, const struct WS_sockaddr* name, int namelen)
|
||||
*/
|
||||
int WINAPI WS_closesocket(SOCKET s)
|
||||
{
|
||||
- int res = SOCKET_ERROR, fd;
|
||||
+ int res = SOCKET_ERROR;
|
||||
if (num_startup)
|
||||
{
|
||||
- fd = get_sock_fd(s, FILE_READ_DATA, NULL);
|
||||
- if (fd >= 0)
|
||||
- {
|
||||
- release_sock_fd(s, fd);
|
||||
- if (CloseHandle(SOCKET2HANDLE(s)))
|
||||
- res = 0;
|
||||
- }
|
||||
- else
|
||||
+ if (!wine_server_handle_exists(SOCKET2HANDLE(s), FILE_READ_DATA))
|
||||
SetLastError(WSAENOTSOCK);
|
||||
+ else if (CloseHandle(SOCKET2HANDLE(s)))
|
||||
+ res = 0;
|
||||
}
|
||||
else
|
||||
SetLastError(WSANOTINITIALISED);
|
||||
diff --git a/include/wine/server.h b/include/wine/server.h
|
||||
index d573d1f..a114cf9 100644
|
||||
--- a/include/wine/server.h
|
||||
+++ b/include/wine/server.h
|
||||
@@ -52,6 +52,7 @@ struct __server_request_info
|
||||
extern unsigned int wine_server_call( void *req_ptr );
|
||||
extern void CDECL wine_server_send_fd( int fd );
|
||||
extern int CDECL wine_server_fd_to_handle( int fd, unsigned int access, unsigned int attributes, HANDLE *handle );
|
||||
+extern int CDECL wine_server_handle_exists( HANDLE handle, unsigned int access );
|
||||
extern int CDECL wine_server_handle_to_fd( HANDLE handle, unsigned int access, int *unix_fd, unsigned int *options );
|
||||
extern void CDECL wine_server_release_fd( HANDLE handle, int unix_fd );
|
||||
|
||||
--
|
||||
2.3.5
|
||||
|
@ -1,45 +0,0 @@
|
||||
From d0e3cdea2ff7ef0d2b2d3959d00538d1473cac70 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 30 Apr 2015 05:43:26 +0200
|
||||
Subject: ws2_32: Properly handle closing sockets during a select call.
|
||||
|
||||
Based on a patch by Bruno Jesus.
|
||||
---
|
||||
dlls/ws2_32/socket.c | 8 +++++++-
|
||||
dlls/ws2_32/tests/sock.c | 1 -
|
||||
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|
||||
index 22dd084..15e4dce 100644
|
||||
--- a/dlls/ws2_32/socket.c
|
||||
+++ b/dlls/ws2_32/socket.c
|
||||
@@ -4768,7 +4768,13 @@ static void release_poll_fds( const WS_fd_set *readfds, const WS_fd_set *writefd
|
||||
if (exceptfds)
|
||||
{
|
||||
for (i = 0; i < exceptfds->fd_count; i++, j++)
|
||||
- if (fds[j].fd != -1) release_sock_fd( exceptfds->fd_array[i], fds[j].fd );
|
||||
+ {
|
||||
+ if (fds[j].fd == -1) continue;
|
||||
+ release_sock_fd( exceptfds->fd_array[i], fds[j].fd );
|
||||
+ if (!(fds[j].revents & POLLHUP)) continue;
|
||||
+ if (!wine_server_handle_exists( SOCKET2HANDLE(exceptfds->fd_array[i]), 0 ))
|
||||
+ fds[j].revents = 0;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
|
||||
index f31539f..d67a47d 100644
|
||||
--- a/dlls/ws2_32/tests/sock.c
|
||||
+++ b/dlls/ws2_32/tests/sock.c
|
||||
@@ -3834,7 +3834,6 @@ todo_wine
|
||||
FD_ZERO_ALL();
|
||||
FD_SET_ALL(fdWrite);
|
||||
ret = select(0, &readfds, NULL, &exceptfds, &select_timeout);
|
||||
-todo_wine
|
||||
ok(ret == 1, "expected 1, got %d\n", ret);
|
||||
ok(FD_ISSET(fdWrite, &readfds), "fdWrite socket is not in the set\n");
|
||||
WaitForSingleObject (thread_handle, 1000);
|
||||
--
|
||||
2.3.5
|
||||
|
@ -1,2 +0,0 @@
|
||||
Fixes: [38399] Properly handle closing sockets during a select call
|
||||
Category: stable
|
Loading…
Reference in New Issue
Block a user