Rebase against d744f367d263a131feee96e103fb8220e8400b53

This commit is contained in:
Alistair Leslie-Hughes 2018-08-16 09:16:32 +10:00
parent e7bff1bb4f
commit ec47c04ab3
9 changed files with 59 additions and 438 deletions

View File

@ -1,17 +1,16 @@
From a08076678e154c913713221f8eea87c70c11d788 Mon Sep 17 00:00:00 2001
From 04aceb5470fc9ca9133f7a6269144eb7aa8d6a10 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 13 Jun 2015 05:03:54 +0200
Subject: iphlpapi: Fallback to system ping when ICMP permissions are not
present.
Subject: [PATCH] iphlpapi: Fallback to system ping when ICMP permissions are
not present.
Based on an idea by Bruno Jesus.
---
dlls/iphlpapi/icmp.c | 256 ++++++++++++++++++++++++++++++++++++++++-
dlls/iphlpapi/tests/iphlpapi.c | 2 +-
2 files changed, 251 insertions(+), 7 deletions(-)
dlls/iphlpapi/icmp.c | 256 +++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 250 insertions(+), 6 deletions(-)
diff --git a/dlls/iphlpapi/icmp.c b/dlls/iphlpapi/icmp.c
index ebc2f2b..330dd73a 100644
index 0dc2f12..da3850b 100644
--- a/dlls/iphlpapi/icmp.c
+++ b/dlls/iphlpapi/icmp.c
@@ -5,6 +5,7 @@
@ -50,7 +49,7 @@ index ebc2f2b..330dd73a 100644
#define USE_WS_PREFIX
@@ -209,6 +216,7 @@ DWORD WINAPI Icmp6SendEcho2(
@@ -212,6 +219,7 @@ DWORD WINAPI Icmp6SendEcho2(
*/
HANDLE WINAPI IcmpCreateFile(VOID)
{
@ -58,7 +57,7 @@ index ebc2f2b..330dd73a 100644
icmp_t* icp;
int sid=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);
@@ -217,15 +225,14 @@ HANDLE WINAPI IcmpCreateFile(VOID)
@@ -220,15 +228,14 @@ HANDLE WINAPI IcmpCreateFile(VOID)
/* Mac OS X supports non-privileged ICMP via SOCK_DGRAM type. */
sid=socket(AF_INET,SOCK_DGRAM,IPPROTO_ICMP);
}
@ -78,7 +77,7 @@ index ebc2f2b..330dd73a 100644
SetLastError(IP_NO_RESOURCES);
return INVALID_HANDLE_VALUE;
}
@@ -247,11 +254,242 @@ BOOL WINAPI IcmpCloseHandle(HANDLE IcmpHandle)
@@ -250,11 +257,242 @@ BOOL WINAPI IcmpCloseHandle(HANDLE IcmpHandle)
return FALSE;
}
@ -322,7 +321,7 @@ index ebc2f2b..330dd73a 100644
/***********************************************************************
* IcmpSendEcho (IPHLPAPI.@)
@@ -301,6 +539,12 @@ DWORD WINAPI IcmpSendEcho(
@@ -308,6 +546,12 @@ DWORD WINAPI IcmpSendEcho(
return 0;
}
@ -335,25 +334,6 @@ index ebc2f2b..330dd73a 100644
/* Prepare the request */
id=getpid() & 0xFFFF;
seq=InterlockedIncrement(&icmp_sequence) & 0xFFFF;
diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c
index 73e4302..f9c6b99 100644
--- a/dlls/iphlpapi/tests/iphlpapi.c
+++ b/dlls/iphlpapi/tests/iphlpapi.c
@@ -1028,13 +1028,13 @@ todo_wine
replysz = sizeof(ICMP_ECHO_REPLY) + ICMP_MINLEN;
ret = pIcmpSendEcho(icmp, address, senddata, ICMP_MINLEN, NULL, replydata, replysz, 1000);
error = GetLastError();
-todo_wine
ok (ret, "IcmpSendEcho failed unexpectedly with error %d\n", error);
SetLastError(0xdeadbeef);
replysz = sizeof(ICMP_ECHO_REPLY) + ICMP_MINLEN;
ret = pIcmpSendEcho(icmp, address, senddata, ICMP_MINLEN + 1, NULL, replydata, replysz, 1000);
error = GetLastError();
+todo_wine
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
todo_wine
ok (error == IP_GENERAL_FAILURE
--
2.8.0
1.9.1

View File

@ -34,7 +34,7 @@ index e242cb4c0f..fa0ca2da00 100644
+ ov.hEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
+ ok(ov.hEvent != INVALID_HANDLE_VALUE, "CreateEvent failed, error %u\n", GetLastError());
+
+ status = create_pipe(&pipe, FILE_SHARE_READ | FILE_SHARE_WRITE, 0 /* OVERLAPPED */);
+ status = create_pipe(&pipe, FILE_SHARE_READ | FILE_SHARE_WRITE, 0 /* OVERLAPPED */, 0);
+ ok(!status, "NtCreateNamedPipeFile returned %x\n", status);
+ status = listen_pipe(pipe, ov.hEvent, &iosb, FALSE);
+ ok(status == STATUS_PENDING, "NtFsControlFile returned %x\n", status);

View File

@ -1,155 +0,0 @@
From c6c0b64be4f8505a769aa08dca8fa3078831aed5 Mon Sep 17 00:00:00 2001
From: Aric Stewart <aric@codeweavers.com>
Date: Tue, 24 Jul 2018 08:16:45 -0500
Subject: [PATCH 06/24] hidclass.sys: Unload all devices before unloading a
minidriver
Signed-off-by: Aric Stewart <aric@codeweavers.com>
---
dlls/hidclass.sys/hid.h | 8 ++++++++
dlls/hidclass.sys/main.c | 8 ++++++++
dlls/hidclass.sys/pnp.c | 35 +++++++++++++++++++++++++++++++----
3 files changed, 47 insertions(+), 4 deletions(-)
diff --git a/dlls/hidclass.sys/hid.h b/dlls/hidclass.sys/hid.h
index 1829319..4e8ba3c 100644
--- a/dlls/hidclass.sys/hid.h
+++ b/dlls/hidclass.sys/hid.h
@@ -70,6 +70,12 @@ void RingBuffer_Destroy(struct ReportRingBuffer *buffer) DECLSPEC_HIDDEN;
struct ReportRingBuffer* RingBuffer_Create(UINT buffer_size) DECLSPEC_HIDDEN;
NTSTATUS RingBuffer_SetSize(struct ReportRingBuffer *buffer, UINT size) DECLSPEC_HIDDEN;
+typedef struct _hiddevice
+{
+ struct list entry;
+ DEVICE_OBJECT *device;
+} hid_device;
+
typedef struct _minidriver
{
struct list entry;
@@ -80,6 +86,7 @@ typedef struct _minidriver
pAddDevice AddDevice;
PDRIVER_DISPATCH PNPDispatch;
+ struct list device_list;
} minidriver;
NTSTATUS call_minidriver(ULONG code, DEVICE_OBJECT *device, void *in_buff, ULONG in_size, void *out_buff, ULONG out_size) DECLSPEC_HIDDEN;
@@ -100,6 +107,7 @@ NTSTATUS WINAPI HID_PNP_Dispatch(DEVICE_OBJECT *device, IRP *irp) DECLSPEC_HIDDE
/* Pseudo-Plug and Play support*/
NTSTATUS WINAPI PNP_AddDevice(DRIVER_OBJECT *driver, DEVICE_OBJECT* PDO) DECLSPEC_HIDDEN;
+NTSTATUS PNP_RemoveDevice(minidriver *minidriver, DEVICE_OBJECT* device, IRP* irp) DECLSPEC_HIDDEN;
/* Parsing HID Report Descriptors into preparsed data */
WINE_HIDP_PREPARSED_DATA* ParseDescriptor(BYTE *descriptor, unsigned int length) DECLSPEC_HIDDEN;
diff --git a/dlls/hidclass.sys/main.c b/dlls/hidclass.sys/main.c
index 1742cfe..8bb423b 100644
--- a/dlls/hidclass.sys/main.c
+++ b/dlls/hidclass.sys/main.c
@@ -49,6 +49,12 @@ static VOID WINAPI UnloadDriver(DRIVER_OBJECT *driver)
md = find_minidriver(driver);
if (md)
{
+ hid_device *device, *next;
+ TRACE("%i devices to unload\n", list_count(&md->device_list));
+ LIST_FOR_EACH_ENTRY_SAFE(device, next, &md->device_list, hid_device, entry)
+ {
+ PNP_RemoveDevice(md, device->device, NULL);
+ }
if (md->DriverUnload)
md->DriverUnload(md->minidriver.DriverObject);
list_remove(&md->entry);
@@ -82,6 +88,8 @@ NTSTATUS WINAPI HidRegisterMinidriver(HID_MINIDRIVER_REGISTRATION *registration)
driver->minidriver = *registration;
list_add_tail(&minidriver_list, &driver->entry);
+ list_init(&driver->device_list);
+
return STATUS_SUCCESS;
}
diff --git a/dlls/hidclass.sys/pnp.c b/dlls/hidclass.sys/pnp.c
index 30d1045..c501a74 100644
--- a/dlls/hidclass.sys/pnp.c
+++ b/dlls/hidclass.sys/pnp.c
@@ -75,6 +75,7 @@ static NTSTATUS get_device_id(DEVICE_OBJECT *device, BUS_QUERY_ID_TYPE type, WCH
NTSTATUS WINAPI PNP_AddDevice(DRIVER_OBJECT *driver, DEVICE_OBJECT *PDO)
{
+ hid_device *hiddev;
DEVICE_OBJECT *device = NULL;
NTSTATUS status;
minidriver *minidriver;
@@ -96,13 +97,19 @@ NTSTATUS WINAPI PNP_AddDevice(DRIVER_OBJECT *driver, DEVICE_OBJECT *PDO)
TRACE("PDO add device(%p:%s)\n", PDO, debugstr_w(PDO_id));
minidriver = find_minidriver(driver);
- status = HID_CreateDevice(PDO, &minidriver->minidriver, &device);
+ hiddev = HeapAlloc(GetProcessHeap(), 0, sizeof(*hiddev));
+ if (!hiddev)
+ return STATUS_NO_MEMORY;
+
+ status = HID_CreateDevice(PDO, &minidriver->minidriver, &hiddev->device);
if (status != STATUS_SUCCESS)
{
ERR("Failed to create HID object (%x)\n",status);
HeapFree(GetProcessHeap(), 0, PDO_id);
+ HeapFree(GetProcessHeap(), 0, hiddev);
return status;
}
+ device = hiddev->device;
ext = device->DeviceExtension;
InitializeListHead(&ext->irp_queue);
@@ -177,6 +184,8 @@ NTSTATUS WINAPI PNP_AddDevice(DRIVER_OBJECT *driver, DEVICE_OBJECT *PDO)
return STATUS_NOT_SUPPORTED;
}
+ list_add_tail(&(minidriver->device_list), &hiddev->entry);
+
ext->information.DescriptorSize = ext->preparseData->dwSize;
lstrcpyW(ext->instance_id, device_enumeratorW);
@@ -200,6 +209,26 @@ NTSTATUS WINAPI PNP_AddDevice(DRIVER_OBJECT *driver, DEVICE_OBJECT *PDO)
return STATUS_SUCCESS;
}
+NTSTATUS PNP_RemoveDevice(minidriver *minidriver, DEVICE_OBJECT *device, IRP* irp)
+{
+ hid_device *hiddev;
+ NTSTATUS rc = STATUS_NOT_SUPPORTED;
+
+ if (irp)
+ rc = minidriver->PNPDispatch(device, irp);
+ HID_DeleteDevice(&minidriver->minidriver, device);
+ LIST_FOR_EACH_ENTRY(hiddev, &minidriver->device_list, hid_device, entry)
+ {
+ if (hiddev->device == device)
+ {
+ list_remove(&hiddev->entry);
+ HeapFree(GetProcessHeap(), 0, hiddev);
+ break;
+ }
+ }
+ return rc;
+}
+
NTSTATUS WINAPI HID_PNP_Dispatch(DEVICE_OBJECT *device, IRP *irp)
{
NTSTATUS rc = STATUS_NOT_SUPPORTED;
@@ -255,9 +284,7 @@ NTSTATUS WINAPI HID_PNP_Dispatch(DEVICE_OBJECT *device, IRP *irp)
}
case IRP_MN_REMOVE_DEVICE:
{
- rc = minidriver->PNPDispatch(device, irp);
- HID_DeleteDevice(&minidriver->minidriver, device);
- return rc;
+ return PNP_RemoveDevice(minidriver, device, irp);
}
default:
{
--
1.9.1

View File

@ -1,198 +0,0 @@
From 6b416c0b1c963ced6ec11ccf46b9e99650267297 Mon Sep 17 00:00:00 2001
From: Kai Krakow <kai@kaishome.de>
Date: Sat, 28 Jul 2018 10:24:04 +0200
Subject: [PATCH 13/24] winebus.sys: Do not report HID report read errors
unconditionally
Device reports may come in faster than our consumers could possibly read
them, this is especially true for multi-axis events: When you move a
stick across its range, it will always generate at least two events, one
for the x axis, and one for the y axis. This is not really an error
situation, so let's report this situation only once at most. If we
already know the multi-event situation, let's skip logging this
completely: We won't loose any information anyway because the report
contains a complete device state and only axis positions were updated.
Thus, this commit adds a parameter to process_hid_report() to let it
know if we are currently processing reports that are known to be sent
multiple times in sequence (with updated reports).
Also, if our consumers are slow to respond, then report the issue only
once and not per each occurrence during the duration of one consumer
read cycle.
Finally, this is not really an error, it's a warning at most, thus
degrade the error message to a warning to not pollute peoples consoles
and logs with unimportant stuff.
Especially during gaming I was seeing screens over screens full of only
this single log message. This commit fixes it.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=43125
CC: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Kai Krakow <kai@kaishome.de>
---
dlls/winebus.sys/bus.h | 2 +-
dlls/winebus.sys/bus_iohid.c | 2 +-
dlls/winebus.sys/bus_sdl.c | 12 ++++++------
dlls/winebus.sys/bus_udev.c | 4 ++--
dlls/winebus.sys/main.c | 18 +++++++++++++++---
5 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/dlls/winebus.sys/bus.h b/dlls/winebus.sys/bus.h
index bf93c04..1e2989e 100644
--- a/dlls/winebus.sys/bus.h
+++ b/dlls/winebus.sys/bus.h
@@ -45,7 +45,7 @@ DEVICE_OBJECT *bus_create_hid_device(DRIVER_OBJECT *driver, const WCHAR *busidW,
DEVICE_OBJECT *bus_find_hid_device(const platform_vtbl *vtbl, void *platform_dev) DECLSPEC_HIDDEN;
void bus_remove_hid_device(DEVICE_OBJECT *device) DECLSPEC_HIDDEN;
NTSTATUS WINAPI hid_internal_dispatch(DEVICE_OBJECT *device, IRP *irp) DECLSPEC_HIDDEN;
-void process_hid_report(DEVICE_OBJECT *device, BYTE *report, DWORD length) DECLSPEC_HIDDEN;
+void process_hid_report(DEVICE_OBJECT *device, BYTE *report, DWORD length, BOOL warn_multi_events) DECLSPEC_HIDDEN;
DEVICE_OBJECT* bus_enumerate_hid_devices(const platform_vtbl *vtbl, enum_func function, void* context) DECLSPEC_HIDDEN;
/* General Bus Functions */
diff --git a/dlls/winebus.sys/bus_iohid.c b/dlls/winebus.sys/bus_iohid.c
index 501a40d..74e5d82 100644
--- a/dlls/winebus.sys/bus_iohid.c
+++ b/dlls/winebus.sys/bus_iohid.c
@@ -135,7 +135,7 @@ static void handle_IOHIDDeviceIOHIDReportCallback(void *context,
uint32_t reportID, uint8_t *report, CFIndex report_length)
{
DEVICE_OBJECT *device = (DEVICE_OBJECT*)context;
- process_hid_report(device, report, report_length);
+ process_hid_report(device, report, report_length, TRUE);
}
static int compare_platform_device(DEVICE_OBJECT *device, void *platform_dev)
diff --git a/dlls/winebus.sys/bus_sdl.c b/dlls/winebus.sys/bus_sdl.c
index 159727f..99a206c 100644
--- a/dlls/winebus.sys/bus_sdl.c
+++ b/dlls/winebus.sys/bus_sdl.c
@@ -683,7 +683,7 @@ static BOOL set_report_from_event(SDL_Event *event)
set_button_value(ie->button, ie->state, private->report_buffer);
- process_hid_report(device, private->report_buffer, private->buffer_length);
+ process_hid_report(device, private->report_buffer, private->buffer_length, TRUE);
break;
}
case SDL_JOYAXISMOTION:
@@ -693,7 +693,7 @@ static BOOL set_report_from_event(SDL_Event *event)
if (ie->axis < 6)
{
set_axis_value(private, ie->axis, ie->value);
- process_hid_report(device, private->report_buffer, private->buffer_length);
+ process_hid_report(device, private->report_buffer, private->buffer_length, FALSE);
}
break;
}
@@ -702,7 +702,7 @@ static BOOL set_report_from_event(SDL_Event *event)
SDL_JoyBallEvent *ie = &event->jball;
set_ball_value(private, ie->ball, ie->xrel, ie->yrel);
- process_hid_report(device, private->report_buffer, private->buffer_length);
+ process_hid_report(device, private->report_buffer, private->buffer_length, FALSE);
break;
}
case SDL_JOYHATMOTION:
@@ -710,7 +710,7 @@ static BOOL set_report_from_event(SDL_Event *event)
SDL_JoyHatEvent *ie = &event->jhat;
set_hat_value(private, ie->hat, ie->value);
- process_hid_report(device, private->report_buffer, private->buffer_length);
+ process_hid_report(device, private->report_buffer, private->buffer_length, TRUE);
break;
}
default:
@@ -765,7 +765,7 @@ static BOOL set_mapped_report_from_event(SDL_Event *event)
if (usage >= 0)
{
set_button_value(usage, ie->state, private->report_buffer);
- process_hid_report(device, private->report_buffer, private->buffer_length);
+ process_hid_report(device, private->report_buffer, private->buffer_length, TRUE);
}
break;
}
@@ -774,7 +774,7 @@ static BOOL set_mapped_report_from_event(SDL_Event *event)
SDL_ControllerAxisEvent *ie = &event->caxis;
set_axis_value(private, ie->axis, ie->value);
- process_hid_report(device, private->report_buffer, private->buffer_length);
+ process_hid_report(device, private->report_buffer, private->buffer_length, FALSE);
break;
}
default:
diff --git a/dlls/winebus.sys/bus_udev.c b/dlls/winebus.sys/bus_udev.c
index d34e18c..47b9758 100644
--- a/dlls/winebus.sys/bus_udev.c
+++ b/dlls/winebus.sys/bus_udev.c
@@ -768,7 +768,7 @@ static DWORD CALLBACK device_report_thread(void *args)
else if (size == 0)
TRACE_(hid_report)("Failed to read report\n");
else
- process_hid_report(device, report_buffer, size);
+ process_hid_report(device, report_buffer, size, TRUE);
}
return 0;
}
@@ -979,7 +979,7 @@ static DWORD CALLBACK lnxev_device_report_thread(void *args)
else if (size == 0)
TRACE_(hid_report)("Failed to read report\n");
else if (set_report_from_event(private, &ie))
- process_hid_report(device, private->current_report_buffer, private->buffer_length);
+ process_hid_report(device, private->current_report_buffer, private->buffer_length, TRUE);
}
return 0;
}
diff --git a/dlls/winebus.sys/main.c b/dlls/winebus.sys/main.c
index 2f3c05a..624ddd5 100644
--- a/dlls/winebus.sys/main.c
+++ b/dlls/winebus.sys/main.c
@@ -614,11 +614,12 @@ NTSTATUS WINAPI hid_internal_dispatch(DEVICE_OBJECT *device, IRP *irp)
return status;
}
-void process_hid_report(DEVICE_OBJECT *device, BYTE *report, DWORD length)
+void process_hid_report(DEVICE_OBJECT *device, BYTE *report, DWORD length, BOOL warn_multi_events)
{
struct device_extension *ext = (struct device_extension*)device->DeviceExtension;
IRP *irp;
LIST_ENTRY *entry;
+ static int overwrite_reported;
if (!length || !report)
return;
@@ -641,8 +642,18 @@ void process_hid_report(DEVICE_OBJECT *device, BYTE *report, DWORD length)
ext->buffer_size = length;
}
- if (!ext->last_report_read)
- ERR_(hid_report)("Device reports coming in too fast, last report not read yet!\n");
+ /*
+ * Device reports may come in faster than our consumers could possibly
+ * read them, this is especially true for multi-axis events: When you move
+ * a stick across its range, it will always generate at least two events,
+ * one for the x axis, and one for the y axis. This is not really an error
+ * situation, so let's report this situation only once at most. If we
+ * already know the multi-event situation, let's skip logging this
+ * completely: We won't loose any information anyway because the report
+ * contains a complete device state and only axis positions were updated.
+ */
+ if (warn_multi_events && !ext->last_report_read && !overwrite_reported++)
+ WARN_(hid_report)("Device reports coming in too fast, last report not read yet!\n");
memcpy(ext->last_report, report, length);
ext->last_report_size = length;
@@ -659,6 +670,7 @@ void process_hid_report(DEVICE_OBJECT *device, BYTE *report, DWORD length)
irp->UserBuffer, &irp->IoStatus.Information);
ext->last_report_read = TRUE;
IoCompleteRequest(irp, IO_NO_INCREMENT);
+ overwrite_reported = 0;
}
LeaveCriticalSection(&ext->report_cs);
}
--
1.9.1

View File

@ -1,7 +1,7 @@
From b1f80a39d2034c62bbbf8a3e79e1d41e4b6257c4 Mon Sep 17 00:00:00 2001
From 72b03c09586eea8c5cef4c0234e5f2dceea4cafd Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sun, 15 Nov 2015 05:06:30 +0100
Subject: oleaut32: Implement TMStubImpl_Invoke on x86_64.
Subject: [PATCH] oleaut32: Implement TMStubImpl_Invoke on x86_64.
---
dlls/oleaut32/tmarshal.c | 2 +-
@ -9,10 +9,10 @@ Subject: oleaut32: Implement TMStubImpl_Invoke on x86_64.
2 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/dlls/oleaut32/tmarshal.c b/dlls/oleaut32/tmarshal.c
index 9fd0f0374ba..95bf2a7489a 100644
index f27f4c6..16db64f 100644
--- a/dlls/oleaut32/tmarshal.c
+++ b/dlls/oleaut32/tmarshal.c
@@ -2073,7 +2073,7 @@ static HRESULT WINAPI
@@ -2137,7 +2137,7 @@ static HRESULT WINAPI
TMStubImpl_Invoke(
LPRPCSTUBBUFFER iface, RPCOLEMESSAGE* xmsg,IRpcChannelBuffer*rpcchanbuf)
{
@ -22,12 +22,12 @@ index 9fd0f0374ba..95bf2a7489a 100644
const FUNCDESC *fdesc;
TMStubImpl *This = impl_from_IRpcStubBuffer(iface);
diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c
index a575597f1f7..b328db924e6 100644
index 58a8aae..fa9f4d9 100644
--- a/dlls/oleaut32/typelib.c
+++ b/dlls/oleaut32/typelib.c
@@ -6422,6 +6422,34 @@ __ASM_GLOBAL_FUNC( call_method,
/* same function but returning floating point */
static double (CDECL * const call_double_method)(void*,int,const DWORD_PTR*) = (void *)call_method;
@@ -6433,6 +6433,34 @@ __ASM_GLOBAL_FUNC( call_method,
__ASM_GLOBAL_FUNC( call_double_method,
"jmp " __ASM_NAME("call_method") )
+DWORD _invoke(FARPROC func, CALLCONV callconv, int nrargs, DWORD_PTR *args)
+{
@ -61,5 +61,5 @@ index a575597f1f7..b328db924e6 100644
extern LONGLONG CDECL call_method( void *func, int nb_stk_args, const DWORD *stk_args, const DWORD *reg_args );
--
2.14.2
1.9.1

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "ba9f3dc198dfc81bb40159077b73b797006bb73c"
echo "d744f367d263a131feee96e103fb8220e8400b53"
}
# Show version information
@ -2354,23 +2354,17 @@ fi
# Patchset ml-patches
# |
# | Modified files:
# | * dlls/hidclass.sys/hid.h, dlls/hidclass.sys/main.c, dlls/hidclass.sys/pnp.c, dlls/kernel32/process.c,
# | dlls/winebus.sys/bus.h, dlls/winebus.sys/bus_iohid.c, dlls/winebus.sys/bus_sdl.c, dlls/winebus.sys/bus_udev.c,
# | dlls/winebus.sys/main.c, libs/wine/loader.c, programs/cmd/tests/test_builtins.cmd,
# | * dlls/kernel32/process.c, libs/wine/loader.c, programs/cmd/tests/test_builtins.cmd,
# | programs/cmd/tests/test_builtins.cmd.exp, programs/cmd/wcmdmain.c, programs/winecfg/resource.h,
# | programs/winecfg/theme.c, programs/winecfg/winecfg.rc, programs/winemenubuilder/winemenubuilder.c
# |
if test "$enable_ml_patches" -eq 1; then
patch_apply ml-patches/0006-hidclass.sys-Unload-all-devices-before-unloading-a-m.patch
patch_apply ml-patches/0008-programs-Allow-to-disable-MIME-type-associations.patch
patch_apply ml-patches/0013-winebus.sys-Do-not-report-HID-report-read-errors-unc.patch
patch_apply ml-patches/0020-libwine-Use-getsegmentdata-3-on-Mac-OS-to-find-the-e.patch
patch_apply ml-patches/0022-kernel32-Set-environment-variable-PUBLIC-on-the-proc.patch
patch_apply ml-patches/0028-cmd-Handle-quotes-when-parsing-the-folders-in-the-PA.patch
(
printf '%s\n' '+ { "Aric Stewart", "hidclass.sys: Unload all devices before unloading a minidriver.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "programs: Allow to disable MIME-type associations.", 1 },';
printf '%s\n' '+ { "Kai Krakow", "winebus.sys: Do not report HID report read errors unconditionally.", 1 },';
printf '%s\n' '+ { "Chip Davis", "libwine: Use getsegmentdata(3) on Mac OS to find the end of the __TEXT segment.", 1 },';
printf '%s\n' '+ { "Dmitry Timoshkov", "kernel32: Set environment variable %PUBLIC% on the process start-up.", 1 },';
printf '%s\n' '+ { "Fabian Maurer", "cmd: Handle quotes when parsing the folders in the PATH environment variable.", 1 },';

View File

@ -1,4 +1,4 @@
From 7096e603034fef2bbba202144070152ba5a0a32c Mon Sep 17 00:00:00 2001
From 45e6befeba8145914fac0e1e9690026145e9ac25 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 17 Aug 2015 01:11:47 +0200
Subject: [PATCH] server: Store a reference to the parent object for pipe
@ -12,10 +12,10 @@ Subject: [PATCH] server: Store a reference to the parent object for pipe
4 files changed, 52 insertions(+), 19 deletions(-)
diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c
index 43c5ee4..9a1ba67 100644
index be137b8..1c65464 100644
--- a/dlls/ntdll/tests/om.c
+++ b/dlls/ntdll/tests/om.c
@@ -1487,14 +1487,11 @@ static void test_query_object(void)
@@ -1503,14 +1503,11 @@ static void test_query_object(void)
status = pNtQueryObject( handle, ObjectNameInformation, buffer, sizeof(buffer), &len );
ok( status == STATUS_SUCCESS , "NtQueryObject returned %x\n", status );
str = (UNICODE_STRING *)buffer;
@ -31,10 +31,10 @@ index 43c5ee4..9a1ba67 100644
"name too short %s\n", wine_dbgstr_w(str->Buffer) );
trace( "got %s len %u\n", wine_dbgstr_w(str->Buffer), len );
diff --git a/server/named_pipe.c b/server/named_pipe.c
index 13cf13b..c7295e2 100644
index 141a052..62b6905 100644
--- a/server/named_pipe.c
+++ b/server/named_pipe.c
@@ -155,6 +155,8 @@ static struct security_descriptor *pipe_server_get_sd( struct object *obj );
@@ -159,6 +159,8 @@ static struct security_descriptor *pipe_server_get_sd( struct object *obj );
static int pipe_server_set_sd( struct object *obj, const struct security_descriptor *sd,
unsigned int set_info );
static void pipe_server_destroy( struct object *obj);
@ -43,7 +43,7 @@ index 13cf13b..c7295e2 100644
static int pipe_server_ioctl( struct fd *fd, ioctl_code_t code, struct async *async );
static void pipe_server_get_file_info( struct fd *fd, unsigned int info_class );
@@ -173,8 +175,8 @@ static const struct object_ops pipe_server_ops =
@@ -177,8 +179,8 @@ static const struct object_ops pipe_server_ops =
pipe_server_get_sd, /* get_sd */
pipe_server_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
@ -54,7 +54,7 @@ index 13cf13b..c7295e2 100644
no_open_file, /* open_file */
no_alloc_handle, /* alloc_handle */
fd_close_handle, /* close_handle */
@@ -201,6 +203,8 @@ static void pipe_client_dump( struct object *obj, int verbose );
@@ -205,6 +207,8 @@ static void pipe_client_dump( struct object *obj, int verbose );
static struct security_descriptor *pipe_client_get_sd( struct object *obj );
static int pipe_client_set_sd( struct object *obj, const struct security_descriptor *sd,
unsigned int set_info );
@ -63,7 +63,7 @@ index 13cf13b..c7295e2 100644
static void pipe_client_destroy( struct object *obj );
static int pipe_client_ioctl( struct fd *fd, ioctl_code_t code, struct async *async );
static void pipe_client_get_file_info( struct fd *fd, unsigned int info_class );
@@ -220,8 +224,8 @@ static const struct object_ops pipe_client_ops =
@@ -224,8 +228,8 @@ static const struct object_ops pipe_client_ops =
pipe_client_get_sd, /* get_sd */
pipe_client_set_sd, /* set_sd */
no_lookup_name, /* lookup_name */
@ -74,7 +74,7 @@ index 13cf13b..c7295e2 100644
no_open_file, /* open_file */
no_alloc_handle, /* alloc_handle */
fd_close_handle, /* close_handle */
@@ -419,6 +423,17 @@ static void pipe_end_destroy( struct pipe_end *pipe_end )
@@ -422,6 +426,17 @@ static void pipe_end_destroy( struct pipe_end *pipe_end )
if (pipe_end->fd) release_object( pipe_end->fd );
}
@ -92,7 +92,7 @@ index 13cf13b..c7295e2 100644
static void pipe_server_destroy( struct object *obj)
{
struct pipe_server *server = (struct pipe_server *)obj;
@@ -441,6 +456,17 @@ static void pipe_server_destroy( struct object *obj)
@@ -444,6 +459,17 @@ static void pipe_server_destroy( struct object *obj)
release_object( server->pipe );
}
@ -110,7 +110,7 @@ index 13cf13b..c7295e2 100644
static void pipe_client_destroy( struct object *obj)
{
struct pipe_client *client = (struct pipe_client *)obj;
@@ -996,9 +1022,10 @@ static void init_pipe_end( struct pipe_end *pipe_end, unsigned int pipe_flags, d
@@ -1109,9 +1135,10 @@ static void init_pipe_end( struct pipe_end *pipe_end, unsigned int pipe_flags, d
static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned int options,
unsigned int pipe_flags )
{
@ -122,7 +122,7 @@ index 13cf13b..c7295e2 100644
if (!server)
return NULL;
@@ -1019,12 +1046,13 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned
@@ -1135,12 +1162,13 @@ static struct pipe_server *create_pipe_server( struct named_pipe *pipe, unsigned
return server;
}
@ -138,17 +138,17 @@ index 13cf13b..c7295e2 100644
if (!client)
return NULL;
@@ -1102,7 +1130,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
@@ -1220,7 +1248,7 @@ static struct object *named_pipe_open_file( struct object *obj, unsigned int acc
return NULL;
}
- if ((client = create_pipe_client( options, pipe->flags, pipe->outsize, options )))
+ if ((client = create_pipe_client( pipe, options, pipe->flags, pipe->outsize, options )))
{
set_no_fd_status( server->pipe_end.fd, STATUS_BAD_DEVICE_TYPE );
allow_fd_caching( server->pipe_end.fd );
if (server->state == ps_wait_open)
fd_async_wake_up( server->pipe_end.fd, ASYNC_TYPE_WAIT, STATUS_SUCCESS );
diff --git a/server/object.c b/server/object.c
index 14cd38e..77772a8 100644
index d0750c5..f40aebe 100644
--- a/server/object.c
+++ b/server/object.c
@@ -176,7 +176,7 @@ WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len )
@ -202,7 +202,7 @@ index 14cd38e..77772a8 100644
/* dump the name of an object to stderr */
diff --git a/server/object.h b/server/object.h
index 72ad852..ddb4410 100644
index 9ff123e..4a5d282 100644
--- a/server/object.h
+++ b/server/object.h
@@ -135,6 +135,8 @@ extern WCHAR *get_object_full_name( struct object *obj, data_size_t *ret_len );
@ -215,5 +215,5 @@ index 72ad852..ddb4410 100644
const struct unicode_str *name, unsigned int attributes,
const struct security_descriptor *sd );
--
2.7.4
1.9.1

View File

@ -1,4 +1,4 @@
From 55ee7e5738f4cb166b806a06a4e2b46bc5cebb3c Mon Sep 17 00:00:00 2001
From 0e816291072f8a941ef5af3e91c4ce9184741967 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 18 Aug 2017 23:22:16 +0200
Subject: [PATCH] d3d11/tests: Add basic dual source blend test.
@ -8,10 +8,10 @@ Subject: [PATCH] d3d11/tests: Add basic dual source blend test.
1 file changed, 169 insertions(+)
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c
index c24287d..083ffe9 100644
index e63ed82..44f046b 100644
--- a/dlls/d3d11/tests/d3d11.c
+++ b/dlls/d3d11/tests/d3d11.c
@@ -27603,6 +27603,174 @@ static void test_depth_clip(void)
@@ -27825,6 +27825,174 @@ static void test_depth_clip(void)
release_test_context(&test_context);
}
@ -186,14 +186,14 @@ index c24287d..083ffe9 100644
START_TEST(d3d11)
{
unsigned int argc, i;
@@ -27735,6 +27903,7 @@ START_TEST(d3d11)
run_for_each_feature_level_in_range(D3D_FEATURE_LEVEL_10_0, D3D_FEATURE_LEVEL_11_0, test_negative_viewports);
test_early_depth_stencil();
test_conservative_depth_output();
+ test_dual_blending();
test_format_compatibility();
test_clip_distance();
test_combined_clip_and_cull_distances();
@@ -27959,6 +28127,7 @@ START_TEST(d3d11)
queue_for_each_feature_level_in_range(D3D_FEATURE_LEVEL_10_0, D3D_FEATURE_LEVEL_11_0, test_negative_viewports);
queue_test(test_early_depth_stencil);
queue_test(test_conservative_depth_output);
+ queue_test(test_dual_blending);
queue_test(test_format_compatibility);
queue_test(test_clip_distance);
queue_test(test_combined_clip_and_cull_distances);
--
1.9.1

View File

@ -1,4 +1,4 @@
From 04c44a9f85dc3d28e68c15e910752882e7e9e91c Mon Sep 17 00:00:00 2001
From ad754e544f3f9238fc93d9003b4d96f7924d0fca Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 1 Jun 2018 14:03:26 +1000
Subject: [PATCH] winex11: Specify a default vulkan driver if one not found at
@ -11,12 +11,12 @@ vulkan library in backports and not everybody will have this mapped.
1 file changed, 13 insertions(+), 16 deletions(-)
diff --git a/dlls/winex11.drv/vulkan.c b/dlls/winex11.drv/vulkan.c
index 58c08ad8180..ea03a2c842f 100644
index 063281d..9f51270 100644
--- a/dlls/winex11.drv/vulkan.c
+++ b/dlls/winex11.drv/vulkan.c
@@ -42,7 +42,9 @@
@@ -43,7 +43,9 @@
WINE_DEFAULT_DEBUG_CHANNEL(vulkan);
WINE_DECLARE_DEBUG_CHANNEL(fps);
-#ifdef SONAME_LIBVULKAN
+#ifndef SONAME_LIBVULKAN
@ -25,7 +25,7 @@ index 58c08ad8180..ea03a2c842f 100644
static CRITICAL_SECTION context_section;
static CRITICAL_SECTION_DEBUG critsect_debug =
@@ -107,9 +109,17 @@ static void *vulkan_handle;
@@ -105,9 +107,17 @@ static void *vulkan_handle;
static BOOL WINAPI wine_vk_init(INIT_ONCE *once, void *param, void **context)
{
@ -45,7 +45,7 @@ index 58c08ad8180..ea03a2c842f 100644
return TRUE;
}
@@ -666,16 +676,3 @@ const struct vulkan_funcs *get_vulkan_driver(UINT version)
@@ -593,16 +603,3 @@ const struct vulkan_funcs *get_vulkan_driver(UINT version)
return NULL;
}
@ -63,5 +63,5 @@ index 58c08ad8180..ea03a2c842f 100644
-
-#endif /* SONAME_LIBVULKAN */
--
2.18.0
1.9.1