First part of Proton shared memory series. The full branch can be seen at https://gitlab.winehq.org/rbernon/wine/-/commits/mr/shared-memories.
--
v36: win32u: Use the desktop shared data for GetCursorPos.
server: Move the last cursor time to the desktop session object.
server: Move the cursor position to the desktop session object.
win32u: Open desktop shared objects from session mapping.
win32u: Open the global session shared mapping.
server: Return the desktop object info in get_thread_desktop.
server: Allocate shared session object for desktops.
include: Add ReadNoFence64 inline helpers.
server: Create a global session shared mapping.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3103
--
v3: jscript: Remove PROP_IDX dispex props by handling them in object prop methods.
jscript: Move filling the PROTREF into a helper.
jscript: Simplify get_flags to only check whether it's enumerable.
jscript: Get rid of on_put in the object vtbl.
jscript: Inline prop_put.
jscript: Inline prop_get.
jscript: Inline invoke_prop_func and invoke PROTREFs using their vtbl method.
jscript: Inline delete_prop.
jscript: Use mandatory methods in the object vtbl to operate on props found
jscript: Use mandatory methods in the object vtbl to operate on props
mshtml/tests: Test redefining a writable indexed prop.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5444
Fixes: cc82780c22db31fed4da8b84e85c01652a995490
--
v3: winegstreamer: Add missing format fields to WMA support check.
winegstreamer: Recognize MFAudioFormat_MPEG and MFAudioFormat_MP3.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5611
Align the Chinese text output of wine cmd
before:

after:

--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5623
Non-"browsable" volumes or those without filesystem mount points are invisible to users and should not be reflected automatically into Wine.
--
v2: mountmgr.sys: Do not add drive letters or volumes for macOS volumes without mount paths.
mountmgr.sys: Do not create drive letters or volumes for unbrowsable macOS volumes.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5618
Fixes Clang warning on 32-bit platforms.
Clang is more strict about `-Wformat` than GCC. For `%I`, it expects the exact `size_t` type, which is `int` on 32-bit targets, while `SIZE_T` is `long`. For that reason, we currently disable those warnings by not using format attribute on MSVC targets. This is not enough for printf, which is a builtin and has the attribute applied anyway. Using trace, like we do in all other cases, "fixes" it.
I plan to make clang less strict about those cases, which would also fix this problem and allow us to enable format attribute in all relevant functions. However, on current versions of clang, this is one of the last few blockers to support `-Werror`, so it would be nice to have it fixed one way or another. If `printf` is preferred here for some reason, we could also just add an explicit `size_t` cast when printing the size.
--
v2: d3dx9/tests: Remove xfile dumping functionality.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5629
Fixes Clang warning on 32-bit platforms.
Clang is more strict about `-Wformat` than GCC. For `%I`, it expects the exact `size_t` type, which is `int` on 32-bit targets, while `SIZE_T` is `long`. For that reason, we currently disable those warnings by not using format attribute on MSVC targets. This is not enough for printf, which is a builtin and has the attribute applied anyway. Using trace, like we do in all other cases, "fixes" it.
I plan to make clang less strict about those cases, which would also fix this problem and allow us to enable format attribute in all relevant functions. However, on current versions of clang, this is one of the last few blockers to support `-Werror`, so it would be nice to have it fixed one way or another. If `printf` is preferred here for some reason, we could also just add an explicit `size_t` cast when printing the size.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5629
First part of Proton shared memory series. The full branch can be seen at https://gitlab.winehq.org/rbernon/wine/-/commits/mr/shared-memories.
--
v35: win32u: Use the desktop shared data for GetCursorPos.
server: Move the last cursor time to the desktop session object.
server: Move the cursor position to the desktop session object.
win32u: Open desktop shared objects from session mapping.
server: Return the desktop object info in get_thread_desktop.
server: Allocate shared session object for desktops.
win32u: Open the global session shared mapping.
include: Add ReadNoFence64 inline helpers.
server: Create a global session shared mapping.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3103
This MR improves the handling of numpad keys for drivers using KBDTABLES (only the Wayland driver at this point). It achieves this by:
1. Allowing drivers to send only the scancode in keyboard events, with win32u performing the scan->vkey mapping internally. A nice side effect of this change is that it fixes a few user32 input test TODOs.
2. Enhancing wineserver to read extended KBD vkey attributes and perform numpad key mapping depending on modifier state.
3. Providing default VK_NUMPAD* -> WCHAR mappings in win32u.
--
v2: winewayland.drv: Populate vkey to wchar entry for VK_DECIMAL.
server: Send numpad virtual keys if NumLock is active.
win32u: Store the full KBD vkey information in kbd_tables_init_vsc2vk.
win32u: Allow drivers to send only the scan code for keyboard events.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5601
This is the third serie related to rewriting cmd's command engine.
Currently, cmd stores block of commands as a linked list of CMD_LIST.
Even for nested commands (like 'if' command inside a 'for' command), it's
parsed as a single list of commands, using a 'depth' attribute and marker
for end of block to describe the structure.
This leads to several issues:
- parsing for nested commands is not 100% robust,
- chaining of commands (and its precedence) is not handled,
- no separation between parsing and execution (esp. for 'IF' and 'FOR'
commands, which behave slightly differently than regular commands
when dealing with variables with delayed expansion),
- data model doesn't 100% fit native behavior (eg redirections can
apply to a block of commands, whereas redirections are attached
to individual commands)
- ...
The final goal is to replace this with:
- a tree of commands:
+ binary nodes for command chaining,
+ 'IF' and 'FOR' commands being parsed and stored as such
+ leaf being a command
It will require a couple more series to reach that goal, so
this series puts in place the basic building bits:
- introducing a new structure CMD_NODE to hold that each node
of such a tree,
- moving the chaining operator into that CMD_NODE (meaning
that we move from a linked list to a binary tree degenerated
into a list: left is command, right is next node).
--
v2: programs/cmd: Move operator from CMD_COMMAND to CMD_NODE.
programs/cmd: Add helpers to handle list in degenerated binary tree.
programs/cmd: Introduce CMD_NODE structure.
programs/cmd: Remove malloc attribute from xrealloc.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5609
The original help info of MKLINK lacks **\\t** which makes the output text of wine cmd not fully aligned.
{width="587" height="330"}
{width="586" height="330"}
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5621
Brendan Shanks (@bshanks) commented about programs/cmd/wcmd.h:
> void WCMD_execute (const WCHAR *orig_command, const WCHAR *redirects,
> CMD_LIST **cmdList, BOOL retrycall);
>
> -void *xalloc(size_t) __WINE_ALLOC_SIZE(1) __WINE_DEALLOC(free) __WINE_MALLOC;
> +void *xrealloc(void *, size_t) __WINE_ALLOC_SIZE(2) __WINE_DEALLOC(free) __WINE_MALLOC;
`realloc` should not use `__WINE_MALLOC`/`attribute((malloc))`. From [the docs](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html):
"functions like realloc do not have this property, as they may return pointers to storage containing pointers to existing objects"
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5600#note_70159
This MR improves the handling of numpad keys for drivers using KBDTABLES (only the Wayland driver at this point). It achieves this by:
1. Allowing drivers to send only the scancode in keyboard events, with win32u performing the scan->vkey mapping internally. A nice side effect of this change is that it fixes a few user32 input test TODOs.
2. Enhancing wineserver to read extended KBD vkey attributes and perform numpad key mapping depending on modifier state.
3. Providing default VK_NUMPAD* -> WCHAR mappings in win32u.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5601