Compare commits

..

42 Commits
v9.12 ... v9.15

Author SHA1 Message Date
Alistair Leslie-Hughes
92374493ee Release v9.15 2024-08-11 15:10:36 +10:00
Alistair Leslie-Hughes
a713da9181 Added add printdlg-properties_btn patchset 2024-08-11 15:03:10 +10:00
Alistair Leslie-Hughes
75f3eede59 Added dinput-regression-fix patchset 2024-08-11 15:00:14 +10:00
Alistair Leslie-Hughes
a7f29f1236 Rebase against 9c69ccf8ef2995548ef5fee9d0b68f68dec5dd62.
Added two patches to fix upstream regression with ODBC32.
2024-08-10 14:50:18 +10:00
Alistair Leslie-Hughes
1143543d4a Updated vkd3d-latest patchset 2024-08-09 07:54:11 +10:00
Alistair Leslie-Hughes
4cfe8f056a Rebase against 7df297968a932437c5ac50c67376f05265179cca. 2024-08-09 07:53:43 +10:00
Alistair Leslie-Hughes
c23ee1bf3b Updated winemapi-user-xdg-mail patchset
Corrected TRACE message.
2024-08-08 06:17:31 +10:00
Alistair Leslie-Hughes
d2636c432f Rebase against a891fcf66751921cf81db294b09a696c6b6999b8. 2024-08-07 16:02:00 +10:00
Alistair Leslie-Hughes
7624463e7c Updated eventfd_synchronization patchset
Move #define _GNU_SOURCE to after the config.h
2024-08-01 07:03:21 +10:00
Alistair Leslie-Hughes
06d80381a4 Rebase against 1dfac2a252d0036c3bae08bf47f00582343a80fb. 2024-07-31 11:38:10 +10:00
Alistair Leslie-Hughes
a59a98678f Release v9.14 2024-07-29 07:45:51 +10:00
Alistair Leslie-Hughes
db14a7bed3 Remove odbc-remove-unixodbc patchset
odbc32-fixes has all the changes required to make ODBC v2 drivers work.
2024-07-29 07:43:13 +10:00
Alistair Leslie-Hughes
6883402dec Update wine URL 2024-07-27 11:51:06 +10:00
Alistair Leslie-Hughes
b98458cadc Updated ntdll-WRITECOPY patchset
Check return value pointer.
2024-07-27 08:00:00 +10:00
Alistair Leslie-Hughes
37551c99a2 Updated workflow wine respository 2024-07-26 09:43:55 +10:00
Alistair Leslie-Hughes
bdc041f704 Updated vkd3d-latest patchset 2024-07-26 09:41:57 +10:00
Alistair Leslie-Hughes
d4f4b330b8 Rebase against 0c1c8c295b14626c2cb3c2fac65e1f29b1ea874e. 2024-07-25 11:33:20 +10:00
Alistair Leslie-Hughes
9b107c62cb Updated odbc32-fixes patchset
Fix some bad logic
2024-07-21 09:57:39 +10:00
Alistair Leslie-Hughes
9eb00790f0 Updated odbc32-fixes patchset 2024-07-20 13:18:39 +10:00
Alistair Leslie-Hughes
82ccf59f15 Rebase against 8d259957a2470190e109b1175cf61f4d95427fce. 2024-07-20 12:43:58 +10:00
Alistair Leslie-Hughes
2c482721e3 Updated odbc32-fixes patchset
Small correction to version.
2024-07-19 07:42:36 +10:00
Alistair Leslie-Hughes
215e6efd27 Updated odbc32-fixes patchset
Reordered the Alloc/Free handle patches together.

Fixed an issue with the Driver patchset (Thanks Daniel Lehman)
2024-07-18 16:30:12 +10:00
Alistair Leslie-Hughes
05d08d31c0 Updated vkd3d-latest patchset 2024-07-18 10:07:39 +10:00
Alistair Leslie-Hughes
73441d6d9b Updated odbc32-fixes patchset
More updates to support ODBC 2.0.
2024-07-18 10:00:20 +10:00
Alistair Leslie-Hughes
39ad9d8625 Rebase against ca938c795c0c7a2fa11384414809d9a328e3e96f. 2024-07-18 09:59:41 +10:00
Alistair Leslie-Hughes
fe62b910f5 Rebase against 88a28aa5757ae74d9997b470d70216f10974247f. 2024-07-17 08:25:49 +10:00
Alistair Leslie-Hughes
1d529ee294 Updated odbc32-fixes patchset
Fixes when writing based of the column handle.  Just check if we have been set
seem enough for now.
2024-07-16 10:11:19 +10:00
Alistair Leslie-Hughes
67a860f344 Rebase against 8070ed27bc4bb8c9c43c20734d340b62b379fcfc. 2024-07-16 09:23:21 +10:00
Alistair Leslie-Hughes
6bab3a7617 Updated odbc32-fixes patchset
Update patch to match latest MR patch

Enable the patchset.
2024-07-16 08:58:13 +10:00
Alistair Leslie-Hughes
3c0f797ca6 Added dxgi_getFrameStatistics patchset 2024-07-15 10:06:14 +10:00
Alistair Leslie-Hughes
577974c563 Updated vkd3d-latest patchset
Squash to previous wine-staging release.
2024-07-15 10:04:37 +10:00
Alistair Leslie-Hughes
a442564f05 Release v9.13 2024-07-15 07:43:36 +10:00
Alistair Leslie-Hughes
ad13b6a9e1 Added odbc32-fixes patchset
This fixes issue with the current odcb32 for writing to database
and support for ODBC v2.0.

This is a replacement for odbc-remove-unixodbc as ODBC32 now supports both unixODBC and native drivers.
2024-07-15 07:21:29 +10:00
Alistair Leslie-Hughes
12fb6d73ff Updated vkd3d-latest patchset 2024-07-11 09:54:47 +10:00
Alistair Leslie-Hughes
1f498520be Rebase against c1d5cae54b80449308dd8f9aaa85a1a6a5bd2025. 2024-07-11 08:13:42 +10:00
Alistair Leslie-Hughes
d2c868d8c9 Rebase against 8179609faddee580621529f8b1fffba9a50fb650. 2024-07-10 11:24:56 +10:00
Alistair Leslie-Hughes
f58c6016bd Updated vkd3d-latest patchset 2024-07-09 09:33:03 +10:00
Elizabeth Figura
e479cad86f Rebase against 6e3dcf6c5877867b98b0d01b85206fba780c39c9. 2024-07-08 17:43:50 -05:00
Alistair Leslie-Hughes
4f00617d21 Rebase against 6f2466ea0c20245955d0d2b13b5162a1fe62815b. 2024-07-06 09:31:16 +10:00
Elizabeth Figura
0e802db66f Rebase against 797df8df394d81a165328f9ac6b4039253a78718. 2024-07-04 18:08:56 -05:00
Alistair Leslie-Hughes
0d4b9f2f62 Rebase against 17f052c36a414a05fcb6a6e67bd3aac824fbed3e. 2024-07-02 11:15:09 +10:00
Alistair Leslie-Hughes
d1f022f686 Updated gdi32-rotation patchset
Fixed compile error, passing incompatible types.
2024-07-02 08:03:33 +10:00
116 changed files with 20237 additions and 17065 deletions

View File

@@ -36,7 +36,7 @@ jobs:
mkdir $GITHUB_WORKSPACE/wine
cd wine
git init
git fetch git://source.winehq.org/git/wine.git $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit) --depth=1
git fetch https://gitlab.winehq.org/wine/wine.git $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit) --depth=1
git checkout $($GITHUB_WORKSPACE/staging/patchinstall.py --upstream-commit)
- name: Run patchinstall.py --all

View File

@@ -1,4 +1,4 @@
From f48fa2ff628c3262245593301a141dee31118fd4 Mon Sep 17 00:00:00 2001
From 6a4be6a3089d37ff825853d2644d826d80d59e4f Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 2 Oct 2014 19:44:31 +0200
Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging
@@ -9,10 +9,10 @@ Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging
1 file changed, 15 insertions(+)
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 021f7941969..68cb4b25d85 100644
index bad1492e138..6f80e7b3a28 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -42,6 +42,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay);
@@ -43,6 +43,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay);
WINE_DECLARE_DEBUG_CHANNEL(snoop);
WINE_DECLARE_DEBUG_CHANNEL(loaddll);
WINE_DECLARE_DEBUG_CHANNEL(imports);
@@ -20,7 +20,7 @@ index 021f7941969..68cb4b25d85 100644
#ifdef _WIN64
#define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232)
@@ -3822,6 +3823,7 @@ void WINAPI LdrShutdownProcess(void)
@@ -3823,6 +3824,7 @@ void WINAPI LdrShutdownProcess(void)
process_detach();
}
@@ -28,7 +28,7 @@ index 021f7941969..68cb4b25d85 100644
/******************************************************************
* RtlExitUserProcess (NTDLL.@)
@@ -4244,6 +4246,9 @@ static void release_address_space(void)
@@ -4317,6 +4319,9 @@ static void release_address_space(void)
*/
void loader_init( CONTEXT *context, void **entry )
{
@@ -38,9 +38,9 @@ index 021f7941969..68cb4b25d85 100644
static int attach_done;
NTSTATUS status;
ULONG_PTR cookie, port = 0;
@@ -4317,6 +4322,16 @@ void loader_init( CONTEXT *context, void **entry )
if (NtCurrentTeb()->WowTebOffset) init_wow64( context );
#endif
@@ -4397,6 +4402,16 @@ void loader_init( CONTEXT *context, void **entry )
wm = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress );
}
+ RtlInitUnicodeString( &staging_event_string, L"\\__wine_staging_warn_event" );
+ InitializeObjectAttributes( &staging_event_attr, &staging_event_string, OBJ_OPENIF, NULL, NULL );

View File

@@ -1,4 +1,4 @@
From 1e7b6a812b248a8344076a402fc97bd60da495d1 Mon Sep 17 00:00:00 2001
From 0173ca4b3352506b76801619ae5a05f338d6ff6e Mon Sep 17 00:00:00 2001
From: Jason Edmeades <us@edmeades.me.uk>
Date: Tue, 16 Jul 2019 13:49:18 +1000
Subject: [PATCH] cmd: Support for launching programs based on file association
@@ -15,10 +15,10 @@ Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=36646
1 file changed, 102 insertions(+), 37 deletions(-)
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 12d3db1b012..0f222f3640b 100644
index ce48b16d7ec..2d20ee299fa 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -1494,8 +1494,10 @@ void WCMD_run_program (WCHAR *command, BOOL called)
@@ -1541,8 +1541,10 @@ void WCMD_run_program (WCHAR *command, BOOL called)
/* 1. If extension supplied, see if that file exists */
if (extensionsupplied) {
@@ -30,7 +30,7 @@ index 12d3db1b012..0f222f3640b 100644
}
}
@@ -1525,6 +1527,7 @@ void WCMD_run_program (WCHAR *command, BOOL called)
@@ -1572,6 +1574,7 @@ void WCMD_run_program (WCHAR *command, BOOL called)
}
if (GetFileAttributesW(thisDir) != INVALID_FILE_ATTRIBUTES) {
@@ -38,17 +38,17 @@ index 12d3db1b012..0f222f3640b 100644
found = TRUE;
thisExt = NULL;
}
@@ -1546,6 +1549,7 @@ void WCMD_run_program (WCHAR *command, BOOL called)
/* Special case BAT and CMD */
if (ext && (!wcsicmp(ext, L".bat") || !wcsicmp(ext, L".cmd"))) {
@@ -1595,6 +1598,7 @@ void WCMD_run_program (WCHAR *command, BOOL called)
RETURN_CODE return_code;
BOOL oldinteractive = interactive;
+ WINE_TRACE("Calling batch program\n");
interactive = FALSE;
WCMD_batch(thisDir, command, NULL, INVALID_HANDLE_VALUE);
return_code = WCMD_batch(thisDir, command, NULL, INVALID_HANDLE_VALUE);
interactive = oldinteractive;
@@ -1554,48 +1558,109 @@ void WCMD_run_program (WCHAR *command, BOOL called)
context->skip_rest = TRUE;
}
@@ -1605,48 +1609,109 @@ void WCMD_run_program (WCHAR *command, BOOL called)
if (return_code != RETURN_CODE_ABORTED && return_code != RETURN_CODE_OLD_CHAINING)
errorlevel = return_code;
return;
- } else {
- DWORD exit_code;
@@ -193,5 +193,5 @@ index 12d3db1b012..0f222f3640b 100644
}
--
2.43.0
2.45.2

View File

@@ -1,4 +1,4 @@
From bbd077ad0ba63001b1a785c2b3c740b5b01d3469 Mon Sep 17 00:00:00 2001
From 5d1a7ff33160080ad2aca22f689c5b4b446837d8 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 18 Jun 2024 09:14:56 +1000
Subject: [PATCH] cmd: Changed errorlevel type to DWORD
@@ -12,23 +12,23 @@ as an error with clang/mingw in the latest version.
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index f98ac902eba..147f94ac4bb 100644
index 1e92e88d191..9b8cfd389b9 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -440,7 +440,7 @@ void WCMD_choice (const WCHAR * args) {
@@ -442,7 +442,7 @@ RETURN_CODE WCMD_choice (const WCHAR * args)
SetConsoleMode(GetStdHandle(STD_INPUT_HANDLE), oldmode);
errorlevel = (ptr - opt_c) + 1;
- TRACE("answer: %d\n", errorlevel);
+ TRACE("answer: %ld\n", errorlevel);
free(my_command);
return;
return errorlevel;
}
diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h
index dde5d1e12ec..f202e6ef9e4 100644
index 6c76070338c..d750aca5572 100644
--- a/programs/cmd/wcmd.h
+++ b/programs/cmd/wcmd.h
@@ -306,7 +306,7 @@ void WCMD_set_for_loop_variable(int var_idx, const WCHAR *value);
@@ -336,7 +336,7 @@ void WCMD_set_for_loop_variable(int var_idx, const WCHAR *value);
* variables and batch parameters substitution already done.
*/
extern WCHAR quals[MAXSTRING], param1[MAXSTRING], param2[MAXSTRING];
@@ -38,7 +38,7 @@ index dde5d1e12ec..f202e6ef9e4 100644
extern FOR_CONTEXT *forloopcontext;
extern BOOL delayedsubst;
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 702c3657a2b..0f8bdd3df14 100644
index 2df0d7c53d3..095be784f2c 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -36,7 +36,7 @@ extern const WCHAR inbuilt[][10];

View File

@@ -1 +1,2 @@
Fixes: [18154] cmd: Support for launching programs based on file association
Disabled: True

View File

@@ -1,4 +1,4 @@
From f6d47bb4eb5747fde7059271a560268080756791 Mon Sep 17 00:00:00 2001
From 96af775034dae1c0b133b315c45b7172090d3498 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sun, 11 Jan 2015 16:29:30 +0100
Subject: [PATCH] d3dx9_36: Improve D3DXSaveTextureToFile to save simple
@@ -6,15 +6,15 @@ Subject: [PATCH] d3dx9_36: Improve D3DXSaveTextureToFile to save simple
---
dlls/d3dx9_36/d3dx9_private.h | 2 ++
dlls/d3dx9_36/surface.c | 62 +++++++++++++++++++++++++++++++++++
dlls/d3dx9_36/surface.c | 63 +++++++++++++++++++++++++++++++++++
dlls/d3dx9_36/texture.c | 5 +--
3 files changed, 65 insertions(+), 4 deletions(-)
3 files changed, 66 insertions(+), 4 deletions(-)
diff --git a/dlls/d3dx9_36/d3dx9_private.h b/dlls/d3dx9_36/d3dx9_private.h
index 001a7f26f4f..b322765d164 100644
index 34a9f6eec7f..878dff3fc01 100644
--- a/dlls/d3dx9_36/d3dx9_private.h
+++ b/dlls/d3dx9_36/d3dx9_private.h
@@ -182,6 +182,8 @@ HRESULT lock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, D3DLO
@@ -178,6 +178,8 @@ HRESULT lock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect, D3DLO
IDirect3DSurface9 **temp_surface, BOOL write);
HRESULT unlock_surface(IDirect3DSurface9 *surface, const RECT *surface_rect,
IDirect3DSurface9 *temp_surface, BOOL update);
@@ -24,10 +24,10 @@ index 001a7f26f4f..b322765d164 100644
const PALETTEENTRY *palette, D3DFORMAT format, uint32_t left, uint32_t top, uint32_t right, uint32_t bottom,
uint32_t front, uint32_t back, struct d3dx_pixels *pixels);
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index fb49ca5665a..2a8bd97fe2d 100644
index 31bce97bbab..212d452c654 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -560,6 +560,68 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
@@ -574,6 +574,69 @@ static HRESULT save_dds_surface_to_memory(ID3DXBuffer **dst_buffer, IDirect3DSur
return D3D_OK;
}
@@ -93,14 +93,15 @@ index fb49ca5665a..2a8bd97fe2d 100644
+
+ return hr;
+}
HRESULT load_volume_from_dds(IDirect3DVolume9 *dst_volume, const PALETTEENTRY *dst_palette,
const D3DBOX *dst_box, const void *src_data, const D3DBOX *src_box, DWORD filter, D3DCOLOR color_key,
const D3DXIMAGE_INFO *src_info)
+
HRESULT load_cube_texture_from_dds(IDirect3DCubeTexture9 *cube_texture, const void *src_data,
const PALETTEENTRY *palette, DWORD filter, DWORD color_key, const D3DXIMAGE_INFO *src_info)
{
diff --git a/dlls/d3dx9_36/texture.c b/dlls/d3dx9_36/texture.c
index 52cfb1e8c34..ccbe1fcef20 100644
index b42c9db3f2d..d84bac25cfe 100644
--- a/dlls/d3dx9_36/texture.c
+++ b/dlls/d3dx9_36/texture.c
@@ -1858,10 +1858,7 @@ HRESULT WINAPI D3DXSaveTextureToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE
@@ -1847,10 +1847,7 @@ HRESULT WINAPI D3DXSaveTextureToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE
if (!dst_buffer || !src_texture) return D3DERR_INVALIDCALL;
if (file_format == D3DXIFF_DDS)
@@ -113,5 +114,5 @@ index 52cfb1e8c34..ccbe1fcef20 100644
type = IDirect3DBaseTexture9_GetType(src_texture);
switch (type)
--
2.43.0
2.45.2

View File

@@ -1 +1,2 @@
Fixes: [26898] Support for DDS file format in D3DXSaveTextureToFileInMemory
Disabled: True

View File

@@ -0,0 +1,29 @@
From 434df65f9023ec64c175825e5b38cd9daf744565 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aida=20Jonikien=C4=97?= <aidas957@gmail.com>
Date: Sat, 10 Aug 2024 22:20:30 +0300
Subject: [PATCH] dinput: Use the correct array index in
keyboard_create_device().
This fixes a segfault when launching NFS Underground.
Fixes: f434ea12b83 ("dinput: Implement DIPROP_SCANCODE.")
---
dlls/dinput/keyboard.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c
index a83f825e97d..aee1d996dde 100644
--- a/dlls/dinput/keyboard.c
+++ b/dlls/dinput/keyboard.c
@@ -211,7 +211,7 @@ HRESULT keyboard_create_device( struct dinput *dinput, const GUID *guid, IDirect
if (FAILED(hr = dinput_device_init_device_format( &impl->base.IDirectInputDevice8W_iface ))) goto failed;
- for (i = 0, index = 0; i < 512; ++i)
+ for (i = 0, index = 0; i < impl->base.device_format.dwNumObjs; ++i)
{
if (!GetKeyNameTextW( i << 16, instance.tszName, ARRAY_SIZE(instance.tszName) )) continue;
if (!(dik = map_dik_code( i, 0, subtype, impl->base.dinput->dwVersion ))) continue;
--
2.43.0

View File

@@ -0,0 +1,5 @@
Fixes: Fix crash in NFS Underground
#Depends: dinput-joy-mappings
Depends: dinput-scancode
# PR 6249

View File

@@ -0,0 +1,125 @@
From e31146d5dd91ef05298ae98f7db4868e73011865 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Thu, 23 May 2024 14:25:57 +1000
Subject: [PATCH] dxgi: Semi-stub IDXGISwapChain::GetFrameStatistics.
Not completely correct but does allow improved framerates. Mileage will vary.
---
dlls/dxgi/swapchain.c | 89 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 85 insertions(+), 4 deletions(-)
diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c
index 4797fcecd8d..4111a488407 100644
--- a/dlls/dxgi/swapchain.c
+++ b/dlls/dxgi/swapchain.c
@@ -587,12 +587,66 @@ static HRESULT STDMETHODCALLTYPE d3d11_swapchain_GetContainingOutput(IDXGISwapCh
return dxgi_get_output_from_window(swapchain->factory, window, output);
}
+static int get_display_frequency(void)
+{
+ DEVMODEW mode;
+ BOOL ret;
+
+ memset(&mode, 0, sizeof(mode));
+ mode.dmSize = sizeof(mode);
+ ret = EnumDisplaySettingsExW(NULL, ENUM_CURRENT_SETTINGS, &mode, 0);
+ if (ret && mode.dmFields & DM_DISPLAYFREQUENCY && mode.dmDisplayFrequency)
+ {
+ return mode.dmDisplayFrequency;
+ }
+ else
+ {
+ WARN("Failed to query display frequency, returning a fallback value.\n");
+ return 60;
+ }
+}
+
+static LARGE_INTEGER get_perf_req(void)
+{
+ LARGE_INTEGER performance_frequency;
+
+ QueryPerformanceFrequency(&performance_frequency);
+ return performance_frequency;
+}
+
static HRESULT STDMETHODCALLTYPE d3d11_swapchain_GetFrameStatistics(IDXGISwapChain4 *iface,
DXGI_FRAME_STATISTICS *stats)
{
- FIXME("iface %p, stats %p stub!\n", iface, stats);
+ struct d3d11_swapchain *swapchain = d3d11_swapchain_from_IDXGISwapChain4(iface);
+ HRESULT hr = S_OK;
+ static BOOL once = 0;
+ const LARGE_INTEGER performance_frequency = get_perf_req();
+ int display_frequency = get_display_frequency();
- return E_NOTIMPL;
+ LARGE_INTEGER count;
+ TRACE("iface %p, stats %p Semi-stub\n", iface, stats);
+
+ if (!stats)
+ return E_INVALIDARG;
+
+ QueryPerformanceCounter(&count);
+
+ stats->PresentCount = swapchain->present_count;
+ stats->PresentRefreshCount = 0;
+ stats->SyncRefreshCount = 0;
+ stats->SyncQPCTime.QuadPart = count.QuadPart;
+ stats->SyncGPUTime.QuadPart = 0;
+
+ stats->PresentRefreshCount = performance_frequency.QuadPart / display_frequency;
+ stats->SyncRefreshCount = display_frequency;
+
+ if(!once)
+ {
+ once++;
+ hr = DXGI_ERROR_FRAME_STATISTICS_DISJOINT;
+ }
+
+ return hr;
}
static HRESULT STDMETHODCALLTYPE d3d11_swapchain_GetLastPresentCount(IDXGISwapChain4 *iface,
@@ -2704,9 +2758,36 @@ static HRESULT STDMETHODCALLTYPE d3d12_swapchain_GetContainingOutput(IDXGISwapCh
static HRESULT STDMETHODCALLTYPE d3d12_swapchain_GetFrameStatistics(IDXGISwapChain4 *iface,
DXGI_FRAME_STATISTICS *stats)
{
- FIXME("iface %p, stats %p stub!\n", iface, stats);
+ struct d3d12_swapchain *swapchain = d3d12_swapchain_from_IDXGISwapChain4(iface);
+ HRESULT hr = S_OK;
+ static BOOL once = 0;
+ const LARGE_INTEGER performance_frequency = get_perf_req();
+ int display_frequency = get_display_frequency();
- return E_NOTIMPL;
+ LARGE_INTEGER count;
+ TRACE("iface %p, stats %p Semi-stub\n", iface, stats);
+
+ if (!stats)
+ return E_INVALIDARG;
+
+ QueryPerformanceCounter(&count);
+
+ stats->PresentCount = swapchain->frame_number;
+ stats->PresentRefreshCount = 0;
+ stats->SyncRefreshCount = 0;
+ stats->SyncQPCTime.QuadPart = count.QuadPart;
+ stats->SyncGPUTime.QuadPart = 0;
+
+ stats->PresentRefreshCount = performance_frequency.QuadPart / display_frequency;
+ stats->SyncRefreshCount = display_frequency;
+
+ if(!once)
+ {
+ once++;
+ hr = DXGI_ERROR_FRAME_STATISTICS_DISJOINT;
+ }
+
+ return hr;
}
static HRESULT STDMETHODCALLTYPE d3d12_swapchain_GetLastPresentCount(IDXGISwapChain4 *iface,
--
2.43.0

View File

@@ -0,0 +1 @@
Fixes: [53696] d3d11: Semi-stub IDXGISwapChain::GetFrameStatistics.

View File

@@ -1,28 +1,30 @@
From cdced5d4d89a932fa456191551899e1919a1881e Mon Sep 17 00:00:00 2001
From 4865ed639a87ee06ffcf6a7a74b6c97ef448e7ab Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 12:34:42 -0500
Subject: [PATCH] ntdll: Implement NtWaitForMultipleObjects().
---
dlls/ntdll/unix/esync.c | 170 ++++++++++++++++++++++++++++++++++++++++
dlls/ntdll/unix/esync.c | 172 ++++++++++++++++++++++++++++++++++++++++
dlls/ntdll/unix/esync.h | 3 +
dlls/ntdll/unix/sync.c | 7 ++
3 files changed, 180 insertions(+)
3 files changed, 182 insertions(+)
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
index e031e9cb94f..75ceb95bc66 100644
index e031e9cb94f..85db837f16b 100644
--- a/dlls/ntdll/unix/esync.c
+++ b/dlls/ntdll/unix/esync.c
@@ -22,6 +22,8 @@
#pragma makedep unix
#endif
@@ -24,6 +24,10 @@
+#define _GNU_SOURCE
+
#include "config.h"
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
#include <assert.h>
@@ -34,6 +36,12 @@
#include <errno.h>
#include <fcntl.h>
@@ -34,6 +38,12 @@
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
@@ -35,7 +37,7 @@ index e031e9cb94f..75ceb95bc66 100644
#include <sys/types.h>
#include <unistd.h>
@@ -286,6 +294,168 @@ NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev )
@@ -286,6 +296,168 @@ NTSTATUS esync_release_semaphore( HANDLE handle, ULONG count, ULONG *prev )
return STATUS_SUCCESS;
}
@@ -219,10 +221,10 @@ index c63491dcaad..92b609ebd27 100644
/* We have to synchronize on the fd cache mutex so that our calls to receive_fd
* don't race with theirs. It looks weird, I know.
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index c85f985b4f3..79141999e33 100644
index dd938c95873..4361813e628 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -1479,6 +1479,13 @@ NTSTATUS WINAPI NtWaitForMultipleObjects( DWORD count, const HANDLE *handles, BO
@@ -1588,6 +1588,13 @@ NTSTATUS WINAPI NtWaitForMultipleObjects( DWORD count, const HANDLE *handles, BO
if (!count || count > MAXIMUM_WAIT_OBJECTS) return STATUS_INVALID_PARAMETER_1;
@@ -237,5 +239,5 @@ index c85f985b4f3..79141999e33 100644
select_op.wait.op = wait_any ? SELECT_WAIT : SELECT_WAIT_ALL;
for (i = 0; i < count; i++) select_op.wait.handles[i] = wine_server_obj_handle( handles[i] );
--
2.42.0
2.43.0

View File

@@ -1,4 +1,4 @@
From f1fcc584ff2bb975656b9f2f111d3e09b36293d0 Mon Sep 17 00:00:00 2001
From 27e2bc1b0d098abce9168ea46589024054817e25 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:01:56 -0500
Subject: [PATCH] server: Create eventfd file descriptors for message queues.
@@ -8,7 +8,7 @@ Subject: [PATCH] server: Create eventfd file descriptors for message queues.
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/server/queue.c b/server/queue.c
index 4d3f43b8d52..74a59b2ee84 100644
index ee575724e4e..60f0c043257 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -44,6 +44,7 @@
@@ -19,7 +19,7 @@ index 4d3f43b8d52..74a59b2ee84 100644
#define WM_NCMOUSEFIRST WM_NCMOUSEMOVE
#define WM_NCMOUSELAST (WM_NCMOUSEFIRST+(WM_MOUSELAST-WM_MOUSEFIRST))
@@ -148,6 +149,7 @@ struct msg_queue
@@ -144,6 +145,7 @@ struct msg_queue
int keystate_lock; /* owns an input keystate lock */
const queue_shm_t *shared; /* queue in session shared memory */
unsigned int ignore_post_msg; /* ignore post messages newer than this unique id */
@@ -27,7 +27,7 @@ index 4d3f43b8d52..74a59b2ee84 100644
};
struct hotkey
@@ -164,6 +166,7 @@ static void msg_queue_dump( struct object *obj, int verbose );
@@ -160,6 +162,7 @@ static void msg_queue_dump( struct object *obj, int verbose );
static int msg_queue_add_queue( struct object *obj, struct wait_queue_entry *entry );
static void msg_queue_remove_queue( struct object *obj, struct wait_queue_entry *entry );
static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entry );
@@ -35,7 +35,7 @@ index 4d3f43b8d52..74a59b2ee84 100644
static void msg_queue_satisfied( struct object *obj, struct wait_queue_entry *entry );
static void msg_queue_destroy( struct object *obj );
static void msg_queue_poll_event( struct fd *fd, int event );
@@ -179,7 +182,7 @@ static const struct object_ops msg_queue_ops =
@@ -175,7 +178,7 @@ static const struct object_ops msg_queue_ops =
msg_queue_add_queue, /* add_queue */
msg_queue_remove_queue, /* remove_queue */
msg_queue_signaled, /* signaled */
@@ -44,7 +44,7 @@ index 4d3f43b8d52..74a59b2ee84 100644
msg_queue_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -321,6 +324,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
@@ -313,6 +316,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
queue->last_get_msg = current_time;
queue->keystate_lock = 0;
queue->ignore_post_msg = 0;
@@ -52,7 +52,7 @@ index 4d3f43b8d52..74a59b2ee84 100644
list_init( &queue->send_result );
list_init( &queue->callback_result );
list_init( &queue->pending_timers );
@@ -339,6 +343,9 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
@@ -335,6 +339,9 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
}
SHARED_WRITE_END;
@@ -62,7 +62,7 @@ index 4d3f43b8d52..74a59b2ee84 100644
thread->queue = queue;
if ((desktop = get_thread_desktop( thread, 0 )))
@@ -672,6 +679,9 @@ static inline void clear_queue_bits( struct msg_queue *queue, unsigned int bits
@@ -685,6 +692,9 @@ static inline void clear_queue_bits( struct msg_queue *queue, unsigned int bits
if (queue->keystate_lock) unlock_input_keystate( queue->input );
queue->keystate_lock = 0;
}
@@ -72,7 +72,7 @@ index 4d3f43b8d52..74a59b2ee84 100644
}
/* check if message is matched by the filter */
@@ -1213,6 +1223,13 @@ static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entr
@@ -1227,6 +1237,13 @@ static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entr
return ret || is_signaled( queue );
}
@@ -86,7 +86,7 @@ index 4d3f43b8d52..74a59b2ee84 100644
static void msg_queue_satisfied( struct object *obj, struct wait_queue_entry *entry )
{
struct msg_queue *queue = (struct msg_queue *)obj;
@@ -1258,6 +1275,7 @@ static void msg_queue_destroy( struct object *obj )
@@ -1278,6 +1295,7 @@ static void msg_queue_destroy( struct object *obj )
if (queue->hooks) release_object( queue->hooks );
if (queue->fd) release_object( queue->fd );
if (queue->shared) free_shared_object( queue->shared );
@@ -94,8 +94,8 @@ index 4d3f43b8d52..74a59b2ee84 100644
}
static void msg_queue_poll_event( struct fd *fd, int event )
@@ -2962,6 +2980,9 @@ DECL_HANDLER(set_queue_mask)
if (req->skip_wait) queue->wake_mask = queue->changed_mask = 0;
@@ -3000,6 +3018,9 @@ DECL_HANDLER(set_queue_mask)
}
else wake_up( &queue->obj, 0 );
}
+
@@ -104,19 +104,19 @@ index 4d3f43b8d52..74a59b2ee84 100644
}
}
@@ -2975,6 +2996,9 @@ DECL_HANDLER(get_queue_status)
reply->wake_bits = queue->wake_bits;
reply->changed_bits = queue->changed_bits;
queue->changed_bits &= ~req->clear_bits;
@@ -3020,6 +3041,9 @@ DECL_HANDLER(get_queue_status)
shared->changed_bits &= ~req->clear_bits;
}
SHARED_WRITE_END;
+
+ if (do_esync() && !is_signaled( queue ))
+ esync_clear( queue->esync_fd );
}
else reply->wake_bits = reply->changed_bits = 0;
}
@@ -3229,6 +3253,10 @@ DECL_HANDLER(get_message)
queue->wake_mask = req->wake_mask;
queue->changed_mask = req->changed_mask;
@@ -3286,6 +3310,10 @@ DECL_HANDLER(get_message)
SHARED_WRITE_END;
set_error( STATUS_PENDING ); /* FIXME */
+
+ if (do_esync() && !is_signaled( queue ))

View File

@@ -1,4 +1,4 @@
From 57703c0423cf2b138b93dfaf4bd993d50235e55a Mon Sep 17 00:00:00 2001
From 7522f4cf4bb29413bce97be5e61ebaefb5276c77 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:11:23 -0500
Subject: [PATCH] server, ntdll: Implement message waits.
@@ -6,8 +6,8 @@ Subject: [PATCH] server, ntdll: Implement message waits.
---
dlls/ntdll/unix/esync.c | 51 +++++++++++++++++++++++++++++++++++++++--
server/protocol.def | 4 ++++
server/queue.c | 22 ++++++++++++++++++
3 files changed, 75 insertions(+), 2 deletions(-)
server/queue.c | 24 +++++++++++++++++++
3 files changed, 77 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
index 399930c444b..06d7d8babc6 100644
@@ -105,10 +105,10 @@ index 399930c444b..06d7d8babc6 100644
{
struct stat st;
diff --git a/server/protocol.def b/server/protocol.def
index d4a7173776f..4a081973ca5 100644
index 56f2d263100..46cdbbed9b7 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3964,6 +3964,10 @@ enum esync_type
@@ -3968,6 +3968,10 @@ enum esync_type
unsigned int shm_idx;
@END
@@ -120,10 +120,10 @@ index d4a7173776f..4a081973ca5 100644
@REQ(set_keyboard_repeat)
int enable; /* whether to enable auto-repeat */
diff --git a/server/queue.c b/server/queue.c
index 6183c2fa686..260fb753799 100644
index 60f0c043257..d6b6f2f20aa 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -150,6 +150,7 @@ struct msg_queue
@@ -146,6 +146,7 @@ struct msg_queue
const queue_shm_t *shared; /* queue in session shared memory */
unsigned int ignore_post_msg; /* ignore post messages newer than this unique id */
int esync_fd; /* esync file descriptor (signalled on message) */
@@ -131,7 +131,7 @@ index 6183c2fa686..260fb753799 100644
};
struct hotkey
@@ -325,6 +326,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
@@ -317,6 +318,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
queue->keystate_lock = 0;
queue->ignore_post_msg = 0;
queue->esync_fd = -1;
@@ -139,7 +139,7 @@ index 6183c2fa686..260fb753799 100644
list_init( &queue->send_result );
list_init( &queue->callback_result );
list_init( &queue->pending_timers );
@@ -1170,6 +1172,10 @@ static int is_queue_hung( struct msg_queue *queue )
@@ -1183,6 +1185,10 @@ static int is_queue_hung( struct msg_queue *queue )
if (get_wait_queue_thread(entry)->queue == queue)
return 0; /* thread is waiting on queue -> not hung */
}
@@ -150,18 +150,20 @@ index 6183c2fa686..260fb753799 100644
return 1;
}
@@ -4025,6 +4031,21 @@ DECL_HANDLER(update_rawinput_devices)
@@ -4079,6 +4085,23 @@ DECL_HANDLER(update_rawinput_devices)
}
}
+DECL_HANDLER(esync_msgwait)
+{
+ struct msg_queue *queue = get_current_queue();
+ const queue_shm_t *queue_shm;
+
+ if (!queue) return;
+ queue_shm = queue->shared;
+ queue->esync_in_msgwait = req->in_msgwait;
+
+ if (current->process->idle_event && !(queue->wake_mask & QS_SMRESULT))
+ if (current->process->idle_event && !(queue_shm->wake_mask & QS_SMRESULT))
+ set_event( current->process->idle_event );
+
+ /* and start/stop waiting on the driver */
@@ -172,7 +174,7 @@ index 6183c2fa686..260fb753799 100644
DECL_HANDLER(set_keyboard_repeat)
{
struct desktop *desktop;
@@ -4043,3 +4064,4 @@ DECL_HANDLER(set_keyboard_repeat)
@@ -4097,3 +4120,4 @@ DECL_HANDLER(set_keyboard_repeat)
release_object( desktop );
}

View File

@@ -1,18 +1,24 @@
From 5dcb80fe0d35101804bb978e507e6db361a949af Mon Sep 17 00:00:00 2001
From fdc9d34400af31765d20ca7b070e53d7eec710e4 Mon Sep 17 00:00:00 2001
From: Daniel Wendt <daniel.wendt@linux.com>
Date: Tue, 10 Dec 2013 14:55:32 +0100
Subject: [PATCH] gdi32: fix for rotated ellipse
Bug: http://bugs.winehq.org/show_bug.cgi?id=35331
---
dlls/win32u/dibdrv/graphics.c | 60 ++++++++++++++++++++++++-----------
1 file changed, 42 insertions(+), 18 deletions(-)
dlls/win32u/dibdrv/graphics.c | 63 ++++++++++++++++++++++++-----------
1 file changed, 44 insertions(+), 19 deletions(-)
diff --git a/dlls/win32u/dibdrv/graphics.c b/dlls/win32u/dibdrv/graphics.c
index 3a6f8184009..b5231636261 100644
index 21d2eabbc9e..1eeea1d68ea 100644
--- a/dlls/win32u/dibdrv/graphics.c
+++ b/dlls/win32u/dibdrv/graphics.c
@@ -1535,6 +1535,23 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
@@ -1531,10 +1531,28 @@ BOOL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
DC *dc = get_physdev_dc( dev );
RECT rect;
POINT pt[2], *points;
- int i, end, count;
+ int i, end;
+ ULONG count;
BOOL ret = TRUE;
HRGN outline = 0, interior = 0;
@@ -36,7 +42,7 @@ index 3a6f8184009..b5231636261 100644
if (!get_pen_device_rect( dc, pdev, &rect, left, top, right, bottom )) return TRUE;
pt[0].x = pt[0].y = 0;
@@ -1555,23 +1572,6 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
@@ -1555,23 +1573,6 @@ BOOL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
return FALSE;
}
@@ -60,7 +66,7 @@ index 3a6f8184009..b5231636261 100644
count = ellipse_first_quadrant( ellipse_width, ellipse_height, points );
if (dc->attr->arc_direction == AD_CLOCKWISE)
@@ -1615,13 +1615,37 @@ BOOL CDECL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bott
@@ -1615,13 +1616,37 @@ BOOL dibdrv_RoundRect( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
}
count = end + 1;
@@ -74,7 +80,7 @@ index 3a6f8184009..b5231636261 100644
+ }
+
+ if (pdev->brush.style != BS_NULL &&
+ !(interior = ULongToHandle(NtGdiPolyPolyDraw( ULongToHandle(ALTERNATE), points, (const UINT *)&count, 1, NtGdiPolyPolygonRgn ))))
+ !(interior = ULongToHandle(NtGdiPolyPolyDraw( ULongToHandle(ALTERNATE), points, &count, 1, NtGdiPolyPolygonRgn ))))
+ {
+ free( points );
+ if (outline) NtGdiDeleteObjectApp( outline );
@@ -100,5 +106,5 @@ index 3a6f8184009..b5231636261 100644
NtGdiDeleteObjectApp( interior );
}
--
2.33.0
2.43.0

View File

@@ -1,7 +1,7 @@
From 48cbd1c62bb0d2945334dfea222a7e19ea149c64 Mon Sep 17 00:00:00 2001
From be1665ad0d88598c409f6a1d699562c2dd0d525a Mon Sep 17 00:00:00 2001
From: "Erich E. Hoover" <erich.e.hoover@gmail.com>
Date: Wed, 29 May 2019 16:01:45 -0600
Subject: wcmd: Add junction point support to mklink.
Subject: [PATCH] wcmd: Add junction point support to mklink.
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
---
@@ -9,7 +9,7 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
1 file changed, 47 insertions(+), 1 deletion(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index dd3ae5b509b..53734b1e940 100644
index 5b15c0f397a..6d7512275ce 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -31,6 +31,9 @@
@@ -22,8 +22,8 @@ index dd3ae5b509b..53734b1e940 100644
WINE_DEFAULT_DEBUG_CHANNEL(cmd);
@@ -4997,6 +5000,49 @@ void WCMD_color (void) {
}
@@ -4091,6 +4094,49 @@ RETURN_CODE WCMD_color(void)
return errorlevel = return_code;
}
+BOOL WCMD_create_junction(WCHAR *link, WCHAR *target) {
@@ -72,15 +72,15 @@ index dd3ae5b509b..53734b1e940 100644
/****************************************************************************
* WCMD_mklink
*/
@@ -5045,7 +5091,7 @@ void WCMD_mklink(WCHAR *args)
else if(!junction)
ret = CreateSymbolicLinkW(file1, file2, isdir);
else
- WINE_TRACE("Juction links currently not supported.\n");
+ ret = WCMD_create_junction(file1, file2);
@@ -4141,7 +4187,7 @@ RETURN_CODE WCMD_mklink(WCHAR *args)
else if(!junction)
ret = CreateSymbolicLinkW(file1, file2, isdir);
else
- TRACE("Junction links currently not supported.\n");
+ ret = WCMD_create_junction(file1, file2);
}
if(!ret)
WCMD_output_stderr(WCMD_LoadMessage(WCMD_READFAIL), file1);
if (ret) return errorlevel = NO_ERROR;
--
2.17.1
2.43.0

View File

@@ -1,4 +1,4 @@
From 52baf4b2f68a78a2d0a0ad16fac8e25af70400ff Mon Sep 17 00:00:00 2001
From b083e23347c3f50112410d1c886eb17c75f34a4e Mon Sep 17 00:00:00 2001
From: Andrew Wesie <awesie@gmail.com>
Date: Fri, 24 Apr 2020 14:55:17 -0500
Subject: [PATCH] ntdll: Report unmodified WRITECOPY pages as shared.
@@ -13,10 +13,10 @@ Signed-off-by: Andrew Wesie <awesie@gmail.com>
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 6c530304442..05d4d517aeb 100644
index b3d8b2f7a95..568a0cef74c 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -2441,6 +2441,8 @@ static NTSTATUS map_image_into_view( struct file_view *view, const WCHAR *filena
@@ -2897,6 +2897,8 @@ static NTSTATUS map_image_into_view( struct file_view *view, const WCHAR *filena
ptr + sec->VirtualAddress + file_size,
ptr + sec->VirtualAddress + end );
memset( ptr + sec->VirtualAddress + file_size, 0, end - file_size );
@@ -25,15 +25,15 @@ index 6c530304442..05d4d517aeb 100644
}
}
@@ -4420,7 +4422,7 @@ static NTSTATUS get_working_set_ex( HANDLE process, LPCVOID addr,
}
@@ -5326,7 +5328,7 @@ static void fill_working_set_info( struct fill_working_set_info_data *d, struct
pagemap = d->pm_buffer[page - d->buffer_start];
p->VirtualAttributes.Valid = !(vprot & VPROT_GUARD) && (vprot & 0x0f) && (pagemap >> 63);
- p->VirtualAttributes.Shared = !is_view_valloc( view ) && ((pagemap >> 61) & 1);
+ p->VirtualAttributes.Shared = (!is_view_valloc( view ) && ((pagemap >> 61) & 1)) || ((view->protect & VPROT_WRITECOPY) && !(vprot & VPROT_WRITTEN));
if (p->VirtualAttributes.Shared && p->VirtualAttributes.Valid)
p->VirtualAttributes.ShareCount = 1; /* FIXME */
if (p->VirtualAttributes.Valid)
p->VirtualAttributes.Valid = !(vprot & VPROT_GUARD) && (vprot & 0x0f) && (pagemap >> 63);
- p->VirtualAttributes.Shared = !is_view_valloc( view ) && ((pagemap >> 61) & 1);
+ p->VirtualAttributes.Shared = (!is_view_valloc( view ) && ((pagemap >> 61) & 1)) || ((view->protect & VPROT_WRITECOPY) && !(vprot & VPROT_WRITTEN));
if (p->VirtualAttributes.Shared && p->VirtualAttributes.Valid)
p->VirtualAttributes.ShareCount = 1; /* FIXME */
if (p->VirtualAttributes.Valid)
--
2.35.1
2.43.0

View File

@@ -0,0 +1,30 @@
From d455916aec7649a816deb36c303341a6c7732a97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aida=20Jonikien=C4=97?= <aidas957@gmail.com>
Date: Fri, 26 Jul 2024 20:33:57 +0300
Subject: [PATCH] kernelbase: Handle NULL old_prot parameter in
VirtualProtect().
This fixes a segfault when launching any game with the EA Desktop application.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56694
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56711
---
dlls/kernelbase/memory.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c
index 2b0e674bb9b..d1408cf4c0e 100644
--- a/dlls/kernelbase/memory.c
+++ b/dlls/kernelbase/memory.c
@@ -548,7 +548,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH VirtualLock( void *addr, SIZE_T size )
BOOL WINAPI DECLSPEC_HOTPATCH VirtualProtect( void *addr, SIZE_T size, DWORD new_prot, DWORD *old_prot )
{
BOOL ret = VirtualProtectEx( GetCurrentProcess(), addr, size, new_prot, old_prot );
- if (*old_prot == PAGE_WRITECOPY) *old_prot = PAGE_READWRITE;
+ if (old_prot && *old_prot == PAGE_WRITECOPY) *old_prot = PAGE_READWRITE;
return ret;
}
--
2.43.0

View File

@@ -1,54 +0,0 @@
From 54841f013e3f88c885ad4bc252083e6aa5958472 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Sun, 23 Jun 2024 16:45:43 +1000
Subject: [PATCH] wineodbc: Register as Driver
---
dlls/wineodbc/rsrc.rc | 3 +++
dlls/wineodbc/wineodbc.rgs | 23 +++++++++++++++++++++++
2 files changed, 26 insertions(+)
create mode 100644 dlls/wineodbc/wineodbc.rgs
diff --git a/dlls/wineodbc/rsrc.rc b/dlls/wineodbc/rsrc.rc
index b8fad8fe35b..9bc9d2934ab 100644
--- a/dlls/wineodbc/rsrc.rc
+++ b/dlls/wineodbc/rsrc.rc
@@ -24,3 +24,6 @@
#define WINE_PRODUCTVERSION_STR "3.520.6301.0"
#include "wine/wine_common_ver.rc"
+
+/* @makedep: wineodbc.rgs */
+1 WINE_REGISTRY wineodbc.rgs
diff --git a/dlls/wineodbc/wineodbc.rgs b/dlls/wineodbc/wineodbc.rgs
new file mode 100644
index 00000000000..c83d37976d7
--- /dev/null
+++ b/dlls/wineodbc/wineodbc.rgs
@@ -0,0 +1,23 @@
+HKLM
+{
+ NoRemove Software
+ {
+ NoRemove ODBC
+ {
+ NoRemove ODBCINST.INI
+ {
+ 'Wine ODBC Driver'
+ {
+ val 'Driver' = s '%MODULE%'
+ val 'DriverODBCVer' = s '03.50'
+ val 'Setup' = s '%MODULE%'
+ }
+
+ NoRemove ODBC Drivers
+ {
+ val 'Wine ODBC Driver' = s 'Installed'
+ }
+ }
+ }
+ }
+}
--
2.43.0

Some files were not shown because too many files have changed in this diff Show More