The whole joystick list is refreshed anyway, so probably no reason to track the delay per joystick.
Fixes FPS drops happening each 2-3 seconds in Super House of Dead Ninjas. The game normally calls joyGetPosEx() for joystick 0 only, but once per second it scans all the 16 possible joysticks and for 15 of those joyGetPosEx() results in lengthy joystick list refresh, causing FPS drop in this otherwise not demanding game.
--
v2: winmm: Use a global timeout for refreshing joystick devices.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1142
I was really confused about whether strdupW or wcsdup is preferred in shell32. Since strdupW is deprecated, let's just get rid of it so that no one else has to wonder.
--
v2: shell32: Remove unused function strdupW.
shell32: Don't use strdupW or heap_* functions in shelllink.c.
shell32: Don't use strdupW or heap_* functions in shelldispatch.c.
shell32: Don't use strdupW or heap_* functions in shellole.c.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1103
Interpreting the fist two bytes of the `sockaddr` struct as `sa_family`
produces incorrect behaviour on macOS and (presumbly) BSD.
This change uses both Unix and Windows socket headers to convert the libpcap provided sockaddr before duplicating it.
This fixes sockaddr being always NULL on macOS/BSD and ipv6 addresses not working in general since `AF_INET6` differs on Windows(23), macOS(30) and Linux(10)
For reference https://www.ibm.com/docs/en/i/7.3?topic=family-af-inet-address and this is from the <sys/socket.h> on macOS
```
/*
* [XSI] Structure used by kernel to store most addresses.
*/
struct sockaddr {
__uint8_t sa_len; /* total length */
sa_family_t sa_family; /* [XSI] address family */
char sa_data[14]; /* [XSI] addr value (actually larger) */
};
```
--
v5: wpcap: Convert unix sockaddr to win32 sockaddr
https://gitlab.winehq.org/wine/wine/-/merge_requests/1015
This fixes data race in ARM/ARM64 platforms, and prevents potential
memory access reordering by the compiler.
--
v3: gdiplus: Replace GpImage's busy flag with SRWLOCK.
gdiplus: Avoid copying GpImage's busy flag in select_frame_wic().
gdiplus: Avoid recursively locking image in GdipImageRotateFlip.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1003
This change has been in Proton to fix a bug in the DayZ launcher.
The launcher is a .NET application that, best I can tell, contains marshaling code that calls SetWindowPlacement incorrectly. This results in undefined memory being passed in and broken values returned by GetWindowPlacement. I think the value passed in must be broken on Windows, but as the tests show, Windows rejects SetWindowPlacement calls that don't have length set correctly (but not GetWindowPlacement, as zeroing the structure to give it an invalid length in `other_process_proc` shows).
--
v2: win32u: Reject invalid length in SetWindowPlacement.
user32: Test Get/SetWindowPlacement with invalid length.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1081
On Fri Oct 21 13:37:13 2022 +0000, Bartosz Kosiorek wrote:
> changed this line in [version 14 of the diff](/wine/wine/-/merge_requests/1120/diffs?diff_id=14967&start_sha=1fe0022187d425723510d747a81973ae0a57dd29#5cc40c9a9717f9205417155123fc4bce95d55d9d_651_651)
I implemented it as you said:
```
if(_ismbblead_l(*str, locale) && (str[1] != '\n'))
return 2;
return 1;
```
But maybe se should compare it to zero:
```
if(_ismbblead_l(*str, locale) && (str[1] != 0))
return 2;
return 1;
```
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1120#note_11828