You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
42 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
92374493ee | ||
|
a713da9181 | ||
|
75f3eede59 | ||
|
a7f29f1236 | ||
|
1143543d4a | ||
|
4cfe8f056a | ||
|
c23ee1bf3b | ||
|
d2636c432f | ||
|
7624463e7c | ||
|
06d80381a4 | ||
|
a59a98678f | ||
|
db14a7bed3 | ||
|
6883402dec | ||
|
b98458cadc | ||
|
37551c99a2 | ||
|
bdc041f704 | ||
|
d4f4b330b8 | ||
|
9b107c62cb | ||
|
9eb00790f0 | ||
|
82ccf59f15 | ||
|
2c482721e3 | ||
|
215e6efd27 | ||
|
05d08d31c0 | ||
|
73441d6d9b | ||
|
39ad9d8625 | ||
|
fe62b910f5 | ||
|
1d529ee294 | ||
|
67a860f344 | ||
|
6bab3a7617 | ||
|
3c0f797ca6 | ||
|
577974c563 | ||
|
a442564f05 | ||
|
ad13b6a9e1 | ||
|
12fb6d73ff | ||
|
1f498520be | ||
|
d2c868d8c9 | ||
|
f58c6016bd | ||
|
e479cad86f | ||
|
4f00617d21 | ||
|
0e802db66f | ||
|
0d4b9f2f62 | ||
|
d1f022f686 |
2
.github/workflows/macOS.yml
vendored
2
.github/workflows/macOS.yml
vendored
@@ -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
|
||||
|
@@ -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 );
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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];
|
||||
|
@@ -1 +1,2 @@
|
||||
Fixes: [18154] cmd: Support for launching programs based on file association
|
||||
Disabled: True
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -1 +1,2 @@
|
||||
Fixes: [26898] Support for DDS file format in D3DXSaveTextureToFileInMemory
|
||||
Disabled: True
|
||||
|
@@ -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
|
||||
|
5
patches/dinput-regression-fix/definition
Normal file
5
patches/dinput-regression-fix/definition
Normal file
@@ -0,0 +1,5 @@
|
||||
Fixes: Fix crash in NFS Underground
|
||||
#Depends: dinput-joy-mappings
|
||||
Depends: dinput-scancode
|
||||
|
||||
# PR 6249
|
@@ -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
|
||||
|
1
patches/dxgi_getFrameStatistics/definition
Normal file
1
patches/dxgi_getFrameStatistics/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [53696] d3d11: Semi-stub IDXGISwapChain::GetFrameStatistics.
|
@@ -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
|
||||
|
||||
|
@@ -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 ))
|
||||
|
@@ -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 );
|
||||
}
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -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
Reference in New Issue
Block a user