mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-09-13 09:17:20 -07:00
Rebase against 35180d368a94156cb77b09560b24d3af428b988b.
This commit is contained in:
parent
d4e9192632
commit
2ebe0e23aa
@ -1,46 +0,0 @@
|
||||
From a4cf8d9241b8dd94937408c9a1d20aacfb9dd2e3 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 28 May 2019 14:37:25 +1000
|
||||
Subject: [PATCH 2/2] dinput: Improved tracing of Semantic value.
|
||||
|
||||
---
|
||||
dlls/dinput/dinput_main.c | 16 +++++++++++++++-
|
||||
1 file changed, 15 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
|
||||
index cf050cb71ed..79ef9620de9 100644
|
||||
--- a/dlls/dinput/dinput_main.c
|
||||
+++ b/dlls/dinput/dinput_main.c
|
||||
@@ -290,6 +290,20 @@ static void _dump_EnumDevices_dwFlags(DWORD dwFlags)
|
||||
TRACE("\n");
|
||||
}
|
||||
|
||||
+static const char *dump_semantic(DWORD semantic)
|
||||
+{
|
||||
+ if((semantic & 0xff000000) == 0xff000000)
|
||||
+ return "Any AXIS";
|
||||
+ else if((semantic & 0x82000000) == 0x82000000)
|
||||
+ return "Mouse";
|
||||
+ else if((semantic & 0x81000000) == 0x81000000)
|
||||
+ return "Keybaord";
|
||||
+ else if((semantic & DIVIRTUAL_FLYING_HELICOPTER) == DIVIRTUAL_FLYING_HELICOPTER)
|
||||
+ return "Helicopter";
|
||||
+
|
||||
+ return "Unknown";
|
||||
+}
|
||||
+
|
||||
static void _dump_diactionformatA(LPDIACTIONFORMATA lpdiActionFormat)
|
||||
{
|
||||
unsigned int i;
|
||||
@@ -312,7 +326,7 @@ static void _dump_diactionformatA(LPDIACTIONFORMATA lpdiActionFormat)
|
||||
{
|
||||
TRACE("diaf.rgoAction[%u]:\n", i);
|
||||
TRACE("\tuAppData=0x%lx\n", lpdiActionFormat->rgoAction[i].uAppData);
|
||||
- TRACE("\tdwSemantic=0x%08x\n", lpdiActionFormat->rgoAction[i].dwSemantic);
|
||||
+ TRACE("\tdwSemantic=0x%08x (%s)\n", lpdiActionFormat->rgoAction[i].dwSemantic, dump_semantic(lpdiActionFormat->rgoAction[i].dwSemantic));
|
||||
TRACE("\tdwFlags=0x%x\n", lpdiActionFormat->rgoAction[i].dwFlags);
|
||||
TRACE("\tszActionName=%s\n", debugstr_a(lpdiActionFormat->rgoAction[i].u.lptszActionName));
|
||||
TRACE("\tguidInstance=%s\n", debugstr_guid(&lpdiActionFormat->rgoAction[i].guidInstance));
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,17 +1,60 @@
|
||||
From ed590782f6149f56c0e4c6747cea5a297543047b Mon Sep 17 00:00:00 2001
|
||||
From c9ecf258a9186bb31a18f8a4728e20bb25b4e9cf Mon Sep 17 00:00:00 2001
|
||||
From: Jetro Jormalainen <jje-wine@jv.jetro.fi>
|
||||
Date: Tue, 30 Apr 2019 09:21:24 +1000
|
||||
Subject: [PATCH] dinput: Support username in Config dialog.
|
||||
|
||||
---
|
||||
dlls/dinput/ansi.c | 26 +++++
|
||||
dlls/dinput/config.c | 187 ++++++++++++++++++++++++-----------
|
||||
dlls/dinput/device.c | 2 +-
|
||||
dlls/dinput/device_private.h | 1 +
|
||||
dlls/dinput/dinput_main.c | 28 ++++++
|
||||
4 files changed, 161 insertions(+), 57 deletions(-)
|
||||
dlls/dinput/dinput_main.c | 1 +
|
||||
5 files changed, 160 insertions(+), 57 deletions(-)
|
||||
|
||||
diff --git a/dlls/dinput/ansi.c b/dlls/dinput/ansi.c
|
||||
index 431b812aeb2..270fe6f1498 100644
|
||||
--- a/dlls/dinput/ansi.c
|
||||
+++ b/dlls/dinput/ansi.c
|
||||
@@ -840,11 +840,37 @@ static HRESULT WINAPI dinput8_a_ConfigureDevices( IDirectInput8A *iface_a, LPDIC
|
||||
{
|
||||
hr = diactionformat_atow( format_a, &format_w, TRUE );
|
||||
params_w.lprgFormats = &format_w;
|
||||
+ params_w.dwcUsers = params_a->dwcUsers;
|
||||
+
|
||||
+ if (params_a->lptszUserNames) {
|
||||
+ char *start = params_a->lptszUserNames;
|
||||
+ WCHAR *to = NULL;
|
||||
+ int total_len = 0;
|
||||
+ for (i = 0; i < params_a->dwcUsers; i++)
|
||||
+ {
|
||||
+ char *end = start + 1;
|
||||
+ int len;
|
||||
+ while (*(end++));
|
||||
+ len = MultiByteToWideChar(CP_ACP, 0, start, end - start, NULL, 0);
|
||||
+ total_len += len + 2; /* length of string and two null char */
|
||||
+ if (to)
|
||||
+ to = HeapReAlloc(GetProcessHeap(), 0, to, sizeof(WCHAR) * total_len);
|
||||
+ else
|
||||
+ to = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * total_len);
|
||||
+
|
||||
+ MultiByteToWideChar(CP_ACP, 0, start, end - start, to + (total_len - len - 2), len);
|
||||
+ to[total_len] = 0;
|
||||
+ to[total_len - 1] = 0;
|
||||
+ }
|
||||
+ params_w.lptszUserNames = to;
|
||||
+ }
|
||||
|
||||
if (SUCCEEDED(hr)) hr = IDirectInput8_ConfigureDevices( iface_w, callback, ¶ms_w, flags, ref );
|
||||
|
||||
if (!format_w.hInstString) for (i = 0; i < format_w.dwNumActions; ++i) HeapFree( GetProcessHeap(), 0, (void *)format_w.rgoAction[i].lptszActionName );
|
||||
HeapFree( GetProcessHeap(), 0, format_w.rgoAction );
|
||||
+ HeapFree( GetProcessHeap(), 0, params_w.lptszUserNames);
|
||||
+
|
||||
}
|
||||
|
||||
HeapFree( GetProcessHeap(), 0, params_w.lptszUserNames );
|
||||
diff --git a/dlls/dinput/config.c b/dlls/dinput/config.c
|
||||
index bf44898589..c7a33d2da0 100644
|
||||
index bf448985893..c7a33d2da02 100644
|
||||
--- a/dlls/dinput/config.c
|
||||
+++ b/dlls/dinput/config.c
|
||||
@@ -18,17 +18,23 @@
|
||||
@ -366,10 +409,10 @@ index bf44898589..c7a33d2da0 100644
|
||||
return DI_OK;
|
||||
}
|
||||
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c
|
||||
index 6107ab2653..30483fe691 100644
|
||||
index 05a1dbbb2a1..daaaebdc0d0 100644
|
||||
--- a/dlls/dinput/device.c
|
||||
+++ b/dlls/dinput/device.c
|
||||
@@ -692,7 +692,7 @@ static HKEY get_mapping_key(const WCHAR *device, const WCHAR *username, const WC
|
||||
@@ -704,7 +704,7 @@ static HKEY get_mapping_key(const WCHAR *device, const WCHAR *username, const WC
|
||||
return hkey;
|
||||
}
|
||||
|
||||
@ -379,10 +422,10 @@ index 6107ab2653..30483fe691 100644
|
||||
WCHAR *guid_str = NULL;
|
||||
DIDEVICEINSTANCEW didev;
|
||||
diff --git a/dlls/dinput/device_private.h b/dlls/dinput/device_private.h
|
||||
index ea794d7396..114e3971ed 100644
|
||||
index 8d3425483c2..a6f22b28bf3 100644
|
||||
--- a/dlls/dinput/device_private.h
|
||||
+++ b/dlls/dinput/device_private.h
|
||||
@@ -125,6 +125,7 @@ extern const char *_dump_dinput_GUID(const GUID *guid) DECLSPEC_HIDDEN;
|
||||
@@ -132,6 +132,7 @@ extern const char *_dump_dinput_GUID(const GUID *guid) DECLSPEC_HIDDEN;
|
||||
|
||||
extern LPDIOBJECTDATAFORMAT dataformat_to_odf_by_type(LPCDIDATAFORMAT df, int n, DWORD type) DECLSPEC_HIDDEN;
|
||||
|
||||
@ -391,7 +434,7 @@ index ea794d7396..114e3971ed 100644
|
||||
|
||||
extern HRESULT _build_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags, DWORD devMask, LPCDIDATAFORMAT df) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
|
||||
index 0855cb41cd..7af377026c 100644
|
||||
index 85de9f79b81..2f40bfbca96 100644
|
||||
--- a/dlls/dinput/dinput_main.c
|
||||
+++ b/dlls/dinput/dinput_main.c
|
||||
@@ -39,6 +39,7 @@
|
||||
@ -402,50 +445,6 @@ index 0855cb41cd..7af377026c 100644
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/asm.h"
|
||||
#include "windef.h"
|
||||
@@ -1253,9 +1254,34 @@ static HRESULT WINAPI IDirectInput8AImpl_ConfigureDevices(
|
||||
|
||||
/* Copy parameters */
|
||||
diCDParamsW.dwSize = sizeof(DICONFIGUREDEVICESPARAMSW);
|
||||
+ diCDParamsW.dwcUsers = lpdiCDParams->dwcUsers;
|
||||
diCDParamsW.dwcFormats = lpdiCDParams->dwcFormats;
|
||||
diCDParamsW.lprgFormats = &diafW;
|
||||
diCDParamsW.hwnd = lpdiCDParams->hwnd;
|
||||
+ diCDParamsW.lptszUserNames = NULL;
|
||||
+
|
||||
+ if (lpdiCDParams->lptszUserNames) {
|
||||
+ char *start = lpdiCDParams->lptszUserNames;
|
||||
+ WCHAR *to = NULL;
|
||||
+ int total_len = 0;
|
||||
+ for (i = 0; i < lpdiCDParams->dwcUsers; i++)
|
||||
+ {
|
||||
+ char *end = start + 1;
|
||||
+ int len;
|
||||
+ while (*(end++));
|
||||
+ len = MultiByteToWideChar(CP_ACP, 0, start, end - start, NULL, 0);
|
||||
+ total_len += len + 2; /* length of string and two null char */
|
||||
+ if (to)
|
||||
+ to = HeapReAlloc(GetProcessHeap(), 0, to, sizeof(WCHAR) * total_len);
|
||||
+ else
|
||||
+ to = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * total_len);
|
||||
+
|
||||
+ MultiByteToWideChar(CP_ACP, 0, start, end - start, to + (total_len - len - 2), len);
|
||||
+ to[total_len] = 0;
|
||||
+ to[total_len - 1] = 0;
|
||||
+ }
|
||||
+ diCDParamsW.lptszUserNames = to;
|
||||
+ }
|
||||
|
||||
diafW.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW)*lpdiCDParams->lprgFormats->dwNumActions);
|
||||
_copy_diactionformatAtoW(&diafW, lpdiCDParams->lprgFormats);
|
||||
@@ -1283,6 +1309,8 @@ static HRESULT WINAPI IDirectInput8AImpl_ConfigureDevices(
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, diafW.rgoAction);
|
||||
|
||||
+ heap_free((void*) diCDParamsW.lptszUserNames);
|
||||
+
|
||||
return hr;
|
||||
}
|
||||
|
||||
--
|
||||
2.17.1
|
||||
2.30.2
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
From ff99f88bc6aabaa9ab5b7e4b44092f39a6079541 Mon Sep 17 00:00:00 2001
|
||||
From 80eb290cf245dcca259049a5bd948a5632d54608 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Church <achurch@achurch.org>
|
||||
Date: Mon, 25 Feb 2019 11:23:12 +1100
|
||||
Subject: [PATCH] dinput: Allow reconnecting to disconnected joysticks
|
||||
|
||||
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=34297
|
||||
---
|
||||
dlls/dinput/joystick_linuxinput.c | 152 ++++++++++++++++++++++--------
|
||||
1 file changed, 115 insertions(+), 37 deletions(-)
|
||||
dlls/dinput/joystick_linuxinput.c | 148 +++++++++++++++++++++++-------
|
||||
1 file changed, 113 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/dlls/dinput/joystick_linuxinput.c b/dlls/dinput/joystick_linuxinput.c
|
||||
index 307b447d237..fcd60724853 100644
|
||||
index 3bc6114322f..3b5ad7c532a 100644
|
||||
--- a/dlls/dinput/joystick_linuxinput.c
|
||||
+++ b/dlls/dinput/joystick_linuxinput.c
|
||||
@@ -84,6 +84,13 @@ struct wine_input_absinfo {
|
||||
@ -25,7 +25,7 @@ index 307b447d237..fcd60724853 100644
|
||||
+
|
||||
/* implemented in effect_linuxinput.c */
|
||||
HRESULT linuxinput_create_effect(int* fd, REFGUID rguid, struct list *parent_list_entry, LPDIRECTINPUTEFFECT* peff);
|
||||
HRESULT linuxinput_get_info_W(int fd, REFGUID rguid, LPDIEFFECTINFOW info);
|
||||
HRESULT linuxinput_get_info_A(int fd, REFGUID rguid, LPDIEFFECTINFOA info);
|
||||
@@ -122,6 +129,7 @@ struct JoystickImpl
|
||||
|
||||
/* joystick private */
|
||||
@ -34,106 +34,114 @@ index 307b447d237..fcd60724853 100644
|
||||
|
||||
int dev_axes_to_di[ABS_MAX];
|
||||
POINTL povs[4];
|
||||
@@ -467,6 +475,7 @@ static JoystickImpl *alloc_device(REFGUID rguid, IDirectInputImpl *dinput, unsig
|
||||
newDevice->generic.base.dinput = dinput;
|
||||
@@ -459,6 +467,7 @@ static HRESULT alloc_device( REFGUID rguid, IDirectInputImpl *dinput, JoystickIm
|
||||
|
||||
newDevice->generic.joy_polldev = joy_polldev;
|
||||
newDevice->joyfd = -1;
|
||||
+ newDevice->joyfd_state = WINE_FD_STATE_CLOSED;
|
||||
newDevice->joydev = &joydevs[index];
|
||||
newDevice->generic.name = newDevice->joydev->name;
|
||||
list_init(&newDevice->ff_effects);
|
||||
@@ -674,6 +683,44 @@ static HRESULT joydev_create_device(IDirectInputImpl *dinput, REFGUID rguid, REF
|
||||
@@ -663,38 +672,15 @@ static HRESULT joydev_create_device(IDirectInputImpl *dinput, REFGUID rguid, REF
|
||||
return DIERR_DEVICENOTREG;
|
||||
}
|
||||
|
||||
-
|
||||
-const struct dinput_device joystick_linuxinput_device = {
|
||||
- "Wine Linux-input joystick driver",
|
||||
- joydev_enum_deviceA,
|
||||
- joydev_enum_deviceW,
|
||||
- joydev_create_device
|
||||
-};
|
||||
-
|
||||
-/******************************************************************************
|
||||
- * Acquire : gets exclusive control of the joystick
|
||||
- */
|
||||
-static HRESULT WINAPI JoystickWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
|
||||
+static int joydev_open_evdev(JoystickImpl *This)
|
||||
+{
|
||||
{
|
||||
- JoystickImpl *This = impl_from_IDirectInputDevice8W(iface);
|
||||
- HRESULT res;
|
||||
-
|
||||
- TRACE("(this=%p)\n",This);
|
||||
+ int fd;
|
||||
+
|
||||
|
||||
- if ((res = IDirectInputDevice2WImpl_Acquire(iface)) != DI_OK)
|
||||
+ if ((fd = open(This->joydev->device, O_RDWR)) == -1)
|
||||
+ {
|
||||
+ if ((fd = open(This->joydev->device, O_RDONLY)) == -1)
|
||||
+ {
|
||||
+ /* Couldn't open the device at all */
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ /* Couldn't open in r/w but opened in read-only. */
|
||||
+ WARN("Could not open %s in read-write mode. Force feedback will be disabled.\n", This->joydev->device);
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ struct input_event event;
|
||||
+
|
||||
+ event.type = EV_FF;
|
||||
+ event.code = FF_GAIN;
|
||||
+ event.value = This->ff_gain;
|
||||
+ if (write(fd, &event, sizeof(event)) == -1)
|
||||
+ ERR("Failed to set gain (%i): %d %s\n", This->ff_gain, errno, strerror(errno));
|
||||
+ if (!This->ff_autocenter)
|
||||
+ {
|
||||
+ /* Disable autocenter. */
|
||||
+ event.code = FF_AUTOCENTER;
|
||||
+ event.value = 0;
|
||||
+ if (write(fd, &event, sizeof(event)) == -1)
|
||||
+ ERR("Failed disabling autocenter: %d %s\n", errno, strerror(errno));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return fd;
|
||||
+}
|
||||
+
|
||||
|
||||
const struct dinput_device joystick_linuxinput_device = {
|
||||
"Wine Linux-input joystick driver",
|
||||
@@ -698,40 +745,14 @@ static HRESULT WINAPI JoystickWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
|
||||
return res;
|
||||
}
|
||||
|
||||
- if ((This->joyfd = open(This->joydev->device, O_RDWR)) == -1)
|
||||
+ if ((This->joyfd = joydev_open_evdev(This)) == -1)
|
||||
{
|
||||
- WARN("Failed to acquire: %x\n", res);
|
||||
- return res;
|
||||
- }
|
||||
-
|
||||
- if ((This->joyfd = open(This->joydev->device, O_RDWR)) == -1)
|
||||
- {
|
||||
- if ((This->joyfd = open(This->joydev->device, O_RDONLY)) == -1)
|
||||
- {
|
||||
- /* Couldn't open the device at all */
|
||||
+ if ((fd = open(This->joydev->device, O_RDONLY)) == -1)
|
||||
{
|
||||
/* Couldn't open the device at all */
|
||||
- ERR("Failed to open device %s: %d %s\n", This->joydev->device, errno, strerror(errno));
|
||||
- IDirectInputDevice2WImpl_Unacquire(iface);
|
||||
- return DIERR_NOTFOUND;
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- /* Couldn't open in r/w but opened in read-only. */
|
||||
- WARN("Could not open %s in read-write mode. Force feedback will be disabled.\n", This->joydev->device);
|
||||
- }
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- struct input_event event;
|
||||
-
|
||||
- event.type = EV_FF;
|
||||
- event.code = FF_GAIN;
|
||||
- event.value = This->ff_gain;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -709,18 +695,53 @@ static HRESULT WINAPI JoystickWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
|
||||
event.type = EV_FF;
|
||||
event.code = FF_GAIN;
|
||||
event.value = This->ff_gain;
|
||||
- if (write(This->joyfd, &event, sizeof(event)) == -1)
|
||||
- ERR("Failed to set gain (%i): %d %s\n", This->ff_gain, errno, strerror(errno));
|
||||
- if (!This->ff_autocenter)
|
||||
- {
|
||||
- /* Disable autocenter. */
|
||||
- event.code = FF_AUTOCENTER;
|
||||
- event.value = 0;
|
||||
+ if (write(fd, &event, sizeof(event)) == -1)
|
||||
ERR("Failed to set gain (%i): %d %s\n", This->ff_gain, errno, strerror(errno));
|
||||
if (!This->ff_autocenter)
|
||||
{
|
||||
/* Disable autocenter. */
|
||||
event.code = FF_AUTOCENTER;
|
||||
event.value = 0;
|
||||
- if (write(This->joyfd, &event, sizeof(event)) == -1)
|
||||
- ERR("Failed disabling autocenter: %d %s\n", errno, strerror(errno));
|
||||
- }
|
||||
+ if (write(fd, &event, sizeof(event)) == -1)
|
||||
ERR("Failed disabling autocenter: %d %s\n", errno, strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
+ return fd;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+const struct dinput_device joystick_linuxinput_device = {
|
||||
+ "Wine Linux-input joystick driver",
|
||||
+ joydev_enum_deviceA,
|
||||
+ joydev_enum_deviceW,
|
||||
+ joydev_create_device
|
||||
+};
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ * Acquire : gets exclusive control of the joystick
|
||||
+ */
|
||||
+static HRESULT WINAPI JoystickWImpl_Acquire(LPDIRECTINPUTDEVICE8W iface)
|
||||
+{
|
||||
+ JoystickImpl *This = impl_from_IDirectInputDevice8W(iface);
|
||||
+ HRESULT res;
|
||||
+
|
||||
+ TRACE("(this=%p)\n",This);
|
||||
+
|
||||
+ if ((res = IDirectInputDevice2WImpl_Acquire(iface)) != DI_OK)
|
||||
+ {
|
||||
+ WARN("Failed to acquire: %x\n", res);
|
||||
+ return res;
|
||||
+ }
|
||||
+
|
||||
+ if ((This->joyfd = joydev_open_evdev(This)) == -1)
|
||||
+ {
|
||||
+ ERR("Failed to open device %s: %d %s\n", This->joydev->device, errno, strerror(errno));
|
||||
+ IDirectInputDevice2WImpl_Unacquire(iface);
|
||||
+ return DIERR_NOTFOUND;
|
||||
}
|
||||
|
||||
+ }
|
||||
+
|
||||
+ This->joyfd_state = WINE_FD_STATE_OK;
|
||||
return DI_OK;
|
||||
}
|
||||
|
||||
@@ -763,6 +784,7 @@ static HRESULT WINAPI JoystickWImpl_Unacquire(LPDIRECTINPUTDEVICE8W iface)
|
||||
@@ -752,6 +773,7 @@ static HRESULT WINAPI JoystickWImpl_Unacquire(LPDIRECTINPUTDEVICE8W iface)
|
||||
|
||||
close(This->joyfd);
|
||||
This->joyfd = -1;
|
||||
@ -141,7 +149,7 @@ index 307b447d237..fcd60724853 100644
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@@ -801,23 +823,79 @@ static void joy_polldev( IDirectInputDevice8W *iface )
|
||||
@@ -790,23 +812,79 @@ static void joy_polldev( IDirectInputDevice8W *iface )
|
||||
struct input_event ie;
|
||||
JoystickImpl *This = impl_from_IDirectInputDevice8W( iface );
|
||||
|
||||
|
@ -51,7 +51,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "ce151dd681fe5ee80daba96dce12e37d6846e152"
|
||||
echo "35180d368a94156cb77b09560b24d3af428b988b"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -1840,7 +1840,7 @@ fi
|
||||
# | * [#34108] dinput: Improve support for user Joystick configuration.
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/dinput/config.c, dlls/dinput/device.c, dlls/dinput/device_private.h, dlls/dinput/dinput_main.c,
|
||||
# | * dlls/dinput/ansi.c, dlls/dinput/config.c, dlls/dinput/device.c, dlls/dinput/device_private.h, dlls/dinput/dinput_main.c,
|
||||
# | dlls/dinput/joystick.c, dlls/dinput8/tests/device.c
|
||||
# |
|
||||
if test "$enable_dinput_joy_mappings" -eq 1; then
|
||||
@ -1859,11 +1859,10 @@ fi
|
||||
# | * [#47326] dinput: Allow mapping of controls based of genre type.
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/dinput/device.c, dlls/dinput/dinput_main.c
|
||||
# | * dlls/dinput/device.c
|
||||
# |
|
||||
if test "$enable_dinput_SetActionMap_genre" -eq 1; then
|
||||
patch_apply dinput-SetActionMap-genre/0001-dinput-Allow-mapping-of-controls-based-of-Genre-type.patch
|
||||
patch_apply dinput-SetActionMap-genre/0002-dinput-Improved-tracing-of-Semantic-value.patch
|
||||
fi
|
||||
|
||||
# Patchset dinput-axis-recalc
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 02727b15297b66c66d622cc28dfa5f6cf1b044ac Mon Sep 17 00:00:00 2001
|
||||
From f9b83aeeeebe3c48fbc9d02c46ed78502a6a7733 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 20 Nov 2014 13:27:24 +0100
|
||||
Subject: [PATCH] ws2_32: Implement returning the proper time with
|
||||
@ -16,11 +16,11 @@ Needs tools/make_requests.
|
||||
4 files changed, 38 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
|
||||
index 4568e7f1bae..60c243d14f0 100644
|
||||
index ff24cc8f57c..25112eb0ef8 100644
|
||||
--- a/dlls/ws2_32/socket.c
|
||||
+++ b/dlls/ws2_32/socket.c
|
||||
@@ -1344,6 +1344,21 @@ static DWORD sock_is_blocking(SOCKET s, BOOL *ret)
|
||||
return err;
|
||||
@@ -898,6 +898,21 @@ static void _enable_event( HANDLE s, unsigned int event,
|
||||
SERVER_END_REQ;
|
||||
}
|
||||
|
||||
+static DWORD _get_connect_time(SOCKET s)
|
||||
@ -41,7 +41,7 @@ index 4568e7f1bae..60c243d14f0 100644
|
||||
static unsigned int _get_sock_mask(SOCKET s)
|
||||
{
|
||||
unsigned int ret;
|
||||
@@ -3969,7 +3984,6 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
|
||||
@@ -2755,7 +2770,6 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
|
||||
|
||||
case WS_SO_CONNECT_TIME:
|
||||
{
|
||||
@ -49,7 +49,7 @@ index 4568e7f1bae..60c243d14f0 100644
|
||||
struct WS_sockaddr addr;
|
||||
int len = sizeof(addr);
|
||||
|
||||
@@ -3981,10 +3995,7 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
|
||||
@@ -2767,10 +2781,7 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
|
||||
if (WS_getpeername(s, &addr, &len) == SOCKET_ERROR)
|
||||
*(DWORD *)optval = ~0u;
|
||||
else
|
||||
@ -62,10 +62,10 @@ index 4568e7f1bae..60c243d14f0 100644
|
||||
return ret;
|
||||
}
|
||||
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
|
||||
index ba03e16ebb1..134433c4b6d 100644
|
||||
index 33ab1e1b576..6e5c29608ee 100644
|
||||
--- a/dlls/ws2_32/tests/sock.c
|
||||
+++ b/dlls/ws2_32/tests/sock.c
|
||||
@@ -4801,11 +4801,15 @@ static void test_send(void)
|
||||
@@ -4131,11 +4131,15 @@ static void test_send(void)
|
||||
OVERLAPPED ov;
|
||||
BOOL bret;
|
||||
DWORD id, bytes_sent, dwRet;
|
||||
@ -81,7 +81,7 @@ index ba03e16ebb1..134433c4b6d 100644
|
||||
set_blocking(dst, FALSE);
|
||||
/* force disable buffering so we can get a pending overlapped request */
|
||||
ret = setsockopt(dst, SOL_SOCKET, SO_SNDBUF, (char *) &zero, sizeof(zero));
|
||||
@@ -4878,6 +4882,22 @@ static void test_send(void)
|
||||
@@ -4208,6 +4212,22 @@ static void test_send(void)
|
||||
ok(ret == SOCKET_ERROR && WSAGetLastError() == ERROR_IO_PENDING,
|
||||
"Failed to start overlapped send %d - %d\n", ret, WSAGetLastError());
|
||||
|
||||
@ -105,10 +105,10 @@ index ba03e16ebb1..134433c4b6d 100644
|
||||
if (src != INVALID_SOCKET)
|
||||
closesocket(src);
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 8360b2611a1..f5f505d69fb 100644
|
||||
index 57abacdf16b..5c236400dca 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -1433,6 +1433,7 @@ enum server_fd_type
|
||||
@@ -1453,6 +1453,7 @@ enum server_fd_type
|
||||
int family; /* family, see socket manpage */
|
||||
int type; /* type, see socket manpage */
|
||||
int protocol; /* protocol, see socket manpage */
|
||||
@ -117,10 +117,10 @@ index 8360b2611a1..f5f505d69fb 100644
|
||||
|
||||
|
||||
diff --git a/server/sock.c b/server/sock.c
|
||||
index 4f97fe72080..07e1cf3a2ca 100644
|
||||
index 228f987959b..e6d0fb7d6c0 100644
|
||||
--- a/server/sock.c
|
||||
+++ b/server/sock.c
|
||||
@@ -1565,6 +1565,7 @@ DECL_HANDLER(get_socket_info)
|
||||
@@ -2414,6 +2414,7 @@ DECL_HANDLER(get_socket_info)
|
||||
reply->family = sock->family;
|
||||
reply->type = sock->type;
|
||||
reply->protocol = sock->proto;
|
||||
@ -129,5 +129,5 @@ index 4f97fe72080..07e1cf3a2ca 100644
|
||||
release_object( &sock->obj );
|
||||
}
|
||||
--
|
||||
2.28.0
|
||||
2.30.2
|
||||
|
||||
|
@ -1 +1 @@
|
||||
ce151dd681fe5ee80daba96dce12e37d6846e152
|
||||
35180d368a94156cb77b09560b24d3af428b988b
|
||||
|
Loading…
Reference in New Issue
Block a user