Some of these fixes are subtle (like the first patch) and very annoying to debug. Although the first patch looks like a hack, surprisingly, it's how the spec itself says it is! It's not even an IE quirk, but a special case in the spec.
For example, the variable name (which holds the builtin eval func) **does** matter: if it's called something other than 'eval', it gets treated differently (as if indirect), and this is verified by the tests + the spec's wording (so Microsoft's implementation follows it).
Most of the patches other than the first 2 are pretty small so they're in same MR.
--
v6: jscript: Store ref to the function code instead of the function instance
jscript: Start from the last argument when adding them to named locals.
jscript: Store detached locals into a scope's specialized buffer.
jscript: Detach the frame's scope before inserting eval() variables into it.
jscript: Don't use iface_to_jsdisp where it's not necessary to grab it.
jscript: Get rid of jsobj in scope_chain_t.
jscript: Fix function leak in scope_init_locals.
jscript: Fix addressing invalid memory if ref is an argument.
jscript: Correctly implement context for indirect eval calls in ES5+ modes.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2942
When we are clipping (due to fullscreen), certain operations are bugged (such as creating another window on top, grabbing the window during a size-move operation, changing mouse capture, etc) so we must temporarily unclip first.
Seems unclipping it temporarily during such operation is enough to fix this.
This probably wasn't very obvious in practice because most times "fullscreen" means a single non-resizeable window with no menus and so on (e.g. fullscreen games), but that's not always the case.
--
v3: win32u: Don't clip while capturing mouse pointer.
winex11: Ungrab clipping window when capturing mouse pointer.
winex11: Don't clip while doing move/resize dragging.
winex11: Don't clip while creating X Window.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1153
Zebediah Figura (@zfigura) commented about dlls/ws2_32/tests/sock.c:
> +
> + ret = listen(listener, 1);
> + ok(!ret, "Could not listen on Unix socket: %lu\n", GetLastError());
> +
> + client = socket(AF_UNIX, SOCK_STREAM, 0);
> + ok(client != INVALID_SOCKET, "Failed to create second Unix socket: %lu\n",
> + GetLastError());
> +
> + clientThread = CreateThread(NULL, 0, test_afunix_client_connect_thread,
> + &(struct afunix_thread_param){ client, addr }, 0, NULL);
> + ok(clientThread != NULL, "CreateThread failed unexpectedly: %ld\n", GetLastError());
> + server = accept(listener, NULL, NULL);
> + ok(server != INVALID_SOCKET, "Could not accept Unix socket connection: %lu\n",
> + GetLastError());
> +
> + WaitForSingleObject(clientThread, 1000);
If you're going to use a thread you should check this return value; if it fails then that means we have a bug in the implementation. We're also missing a CloseHandle().
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35925
Zebediah Figura (@zfigura) commented about dlls/ws2_32/socket.c:
>
> if (!(sync_event = get_sync_event())) return -1;
>
> - params = malloc( sizeof(int) + len );
> - ret_addr = malloc( len );
> + if (addr->sa_family == AF_UNIX && *addr->sa_data)
Accessing sa_data in this way is convenient, but looks wrong. I'd rather just see the cast to sockaddr_un written out anyway.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35919
Zebediah Figura (@zfigura) commented about dlls/ntdll/unix/socket.c:
> break;
> }
>
> + if (unix_addr.addr.sa_family == AF_UNIX)
> + {
> + status = STATUS_NOT_SUPPORTED;
We should print a FIXME here as well.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35916
Zebediah Figura (@zfigura) commented about dlls/ws2_32/socket.c:
> }
> break;
>
> + case AF_UNIX:
> + if (len < sizeof(struct sockaddr_un))
> + {
> + SetLastError( WSAEFAULT );
> + return -1;
> + }
> + break;
Can the length be less than the whole size of sun_path? As always we should test for this.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35918
Zebediah Figura (@zfigura) commented about dlls/ntdll/unix/socket.c:
> return sizeof(uaddr->in6);
> }
>
> + case WS_AF_UNIX:
> + {
> + struct WS_sockaddr_un win = {0};
> +
> + if (wsaddrlen < sizeof(win)) return 0;
> + memcpy( &win, wsaddr, sizeof(win) );
> + uaddr->un.sun_family = AF_UNIX;
> + memcpy( uaddr->un.sun_path, win.sun_path, sizeof(win.sun_path) );
> + return sizeof(uaddr->un);
This can't work, though; we need to convert it to Unix first. (Or print a FIXME and fail for DGRAM sockets.)
Linux man-pages call out returning sizeof(sockaddr_un) as okay on Linux, but is it portable? We may want to return strlen()+1 just to be safe.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35915
Some of these fixes are subtle (like the first patch) and very annoying to debug. Although the first patch looks like a hack, surprisingly, it's how the spec itself says it is! It's not even an IE quirk, but a special case in the spec.
For example, the variable name (which holds the builtin eval func) **does** matter: if it's called something other than 'eval', it gets treated differently (as if indirect), and this is verified by the tests + the spec's wording (so Microsoft's implementation follows it).
Most of the patches other than the first 2 are pretty small so they're in same MR.
--
v5: jscript: Store ref to the function code instead of the function instance
jscript: Start from the last argument when adding them to named locals.
jscript: Store detached locals into a scope's specialized buffer.
jscript: Detach the frame's scope before inserting eval() variables into it.
jscript: Use the scope's dispex as the default variable obj.
jscript: Don't use iface_to_jsdisp where it's not necessary to grab it.
jscript: Get rid of jsobj in scope_chain_t.
jscript: Fix function leak in scope_init_locals.
jscript: Fix addressing invalid memory if ref is an argument.
jscript: Correctly implement context for indirect eval calls in ES5+ modes.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2942
--
v2: winegstreamer: Pass the stream descriptor to media_stream_create.
winegstreamer: Introduce new init_audio_media_types helper.
winegstreamer: Introduce new init_video_media_types helper.
winegstreamer: Factor the creation of the first stream media type.
winegstreamer: Pass a struct wg_parser_stream to media_stream_create.
winegstreamer: Introduce new stream_descriptor_set_tag helper.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2949
This series adds a couple of features to WinRT's media.speech:
- IVoiceInformation, and synthetizer's options are present
(mainly use to store information, not yet to make fully use of it)
- add a dummy implementation (1 single voice); that should be extended
in future series by using ISpVoice instead
- add a couple of more tests to go with implementation
(the serie should prevent MS Flight simulator to crash on first
connection. Crash is due to exception handling of C# generated
exceptions from E_NOTIMPL with some X11 related critical resources).
A+
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3048
--
v7: vkd3d-shader/tpf: Add support for writing 'resinfo' instruction.
vkd3d-shader/tpf: Add support for writing 'sampleinfo' instruction.
vkd3d-shader/hlsl: Parse GetDimensions() method.
tests: Add some tests for GetDimensions().
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/218
If read_identity returns FALSE, it has already called clear_identity.
This is the same problem as in merge request !2970. Unfortunately I did not notice at first that the problem was present in two places.
--
v3: wusa: Zero out identity on error path in read_identity.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3013
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55047
Shrinking the clipping rect to make sure we do not ignore the grab causes some issues. Instead, pass the set_cursor flags to the WM_WINE_CLIPCURSOR message, and introduce a new fullscreen window clipping flag.
As described in the WineHQ bug, an alternative fix would be to keep the shrink but disable fullscreen grabs entirely when the option is disabled [*]. This would break the tests when the option is on but it is not the default. I think that this approach with a flag is better as it doesn't modify the clipping rect.
[*] I don't think they are doing anything but I'm maybe missing something. Maybe grabbing the cursor over the entire virtual screen is preventing the cursor from going over host dock bars or something like that?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3076
This also converts the opaque pointers passed across the PE->Unix interface to opaque types
represented as UINT64 which store the unix side pointer. This makes the thunking simpler and should
avoid anyone accidently dereferencing the unix pointer in the PE code.
This was tested with warcraft 3 (1.24, the last non-reforged release), and is consistent with the standard 32bit build. But since movies on warcraft 3 are broken in standard 32bit builds I could only test that that the gstreamer graph gets built up similarly and not verify the video playback. Id appreciate if someone knew of a working exercise of the gstreamer code.
--
v2: winegstreamer: Implement Wow64 entrypoints in the Unix library.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3075
This also converts the opaque pointers passed across the PE->Unix interface to opaque types
represented as UINT64 which store the unix side pointer. This makes the thunking simpler and should
avoid anyone accidently dereferencing the unix pointer in the PE code.
This was tested with warcraft 3 (1.24, the last non-reforged release), and is consistent with the standard 32bit build. But since movies on warcraft 3 are broken in standard 32bit builds I could only test that that the gstreamer graph gets built up similarly and not verify the video playback. Id appreciate if someone knew of a working exercise of the gstreamer code.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3075
`getpeername()` is currently handled in ntdll. This merge request changes ntdll to forward `getpeername()` to wineserver. The implementation utilises new `peer_addr` and `peer_addr_len` fields in wineserver's `struct sock`.
This fixes multiple `todo_wine`s in `ws2_32/tests` and allows for more accurate peer names to be provided in case the address the socket is bound to on the Unix side does not match what `bind()` was called with on the Windows side.
*This merge request was originally intended to be included in !2786 (Add support for AF_UNIX sockets) but was split into its own merge request because this is not an insignificant change.*
--
v3: ws2_32/tests: Remove todo_wine from now-successful tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3074
Valgrind support requires a fork, which I've published to https://gitlab.winehq.org/rbernon/valgrind. The fork implements loading DWARF debug info from PE files, instead of the old and broken upstream PDB support. I've tried to upstream these changes a long time ago but didn't receive any feedback.
I think we could maybe consider keeping a fork, which I'm happy to maintain, as the changes aren't too large. We may want to investigate adding 32-on-64 support, which may require a bit more changes (to VEX specifically, because its amd64 guest doesn't support segment register manipulation).
The changes here are not all related to Valgrind, and I'll create separate MR for those which may make sense independently from Valgrind / GDB.
Also included is a suppression file to silent some annoying false positives, many of which are coming from the cross-stack accesses during syscalls, which are confusing Valgrind's stack heuristics. One can try this out with something like:
`WINELOADERNOEXEC=1 valgrind --suppressions=tools/valgrind.supp wine64/loader/wine64 wine64/programs/winecfg/winecfg.exe`
--
v9: ntdll: Avoid writing to invalid memory in i386 unix dispatcher.
ntdll: Fix incorrect i386 call_user_mode_callback CFI.
ntdll: Avoid marking freed block header as undefined for valgrind.
ntdll: Force HEAP_TAIL_CHECKING_ENABLED flag with valgrind.
ntdll: Fix valgrind notifications from ntdll.so.
ntdll: Import valgrind headers for PE side ntdll.
ntdll: Maintain a PE module link map and expose it to GDB.
ntdll: Pass a UNICODE_STRING to load_builtin and virtual_map_image.
loader: Expose a shadow copy of ld.so link map to GDB.
ntdll: Add .cfi_signal_frame to __wine_syscall_dispatcher.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1074
Windows 10 [received support](https://devblogs.microsoft.com/commandline/af_unix-comes-to-window… for AF_UNIX sockets in Insider Build 17063. This merge request adds basic support for AF_UNIX sockets to ws2_32 and wineserver.
Of particular note is the difficulty in handling `sun_path`. Most of the functions that allow for translating Windows paths to Unix paths are not accessible from ws2_32. I considered the following options:
* Pass the Windows path to wineserver and do the conversion there.
* This is, as far as I can tell, not possible without major rearchitecting. wineserver does not have functions to translate Windows paths to Unix paths, for obvious reasons.
* Obtain the current working directory of the requesting process and temporarily change directories to there.
* This only handles relative paths and fails for absolute paths, UNC paths, etc.
* Conditionally change directories based on whether the path is relative or not.
* This is error-prone and wineserver does not have the requisite functions to do this cleanly.
I ultimately decided to pass the translated Unix path to wineserver, which changes directories to `dirname(path)`. It then provides `bind` and `connect` with `basename(path)`. This is not threadsafe, but wineserver is not (currently) multithreaded.
Abstract sockets are supported by this patch.
--
v24: ws2_32/tests: Add test for AF_UNIX sockets.
server: Fix getsockname() and accept() on AF_UNIX sockets.
server: Introduce error when attempting to connect() to abstract AF_UNIX sockets.
server: Allow for deletion of socket files.
ws2_32: Add support for AF_UNIX sockets.
ntdll/unix: Add support for AF_UNIX sockets to multiple functions.
ws2_32: Add afunix.h header.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786
Windows 10 [received support](https://devblogs.microsoft.com/commandline/af_unix-comes-to-window… for AF_UNIX sockets in Insider Build 17063. This merge request adds basic support for AF_UNIX sockets to ws2_32 and wineserver.
Of particular note is the difficulty in handling `sun_path`. Most of the functions that allow for translating Windows paths to Unix paths are not accessible from ws2_32. I considered the following options:
* Pass the Windows path to wineserver and do the conversion there.
* This is, as far as I can tell, not possible without major rearchitecting. wineserver does not have functions to translate Windows paths to Unix paths, for obvious reasons.
* Obtain the current working directory of the requesting process and temporarily change directories to there.
* This only handles relative paths and fails for absolute paths, UNC paths, etc.
* Conditionally change directories based on whether the path is relative or not.
* This is error-prone and wineserver does not have the requisite functions to do this cleanly.
I ultimately decided to pass the translated Unix path to wineserver, which changes directories to `dirname(path)`. It then provides `bind` and `connect` with `basename(path)`. This is not threadsafe, but wineserver is not (currently) multithreaded.
Abstract sockets are supported by this patch.
--
v23: kernel32/tests: Extend console inheritance tests.
shell32: Don't show size for inaccessible drives in My Computer.
shell32: Show >4GB values in size columns of My Computer.
win32u: Remove duplicated d3dkmdt.h include.
user32: Remove no longer used setupapi import.
winex11: Set the window cursor immediately in SetCursor.
wineandroid: Set the window cursor immediately in SetCursor.
win32u: Notify drivers of cursor changes on WM_WINE_SETCURSOR.
win32u: Add a hwnd parameter to SetCursor driver entry points.
server: Introduce and send new WM_WINE_SETCURSOR hardware message.
server: Keep track of the current desktop cursor handle.
server: Update desktop cursor window when cursor pos changes.
ntdll: Make only the necessary pages writable in the ARM64EC code map.
ntdll: Load modules with a high base address in high memory.
ntdll: Allocate 64-bit and kernel stacks in high memory.
ntdll: Support the lower memory limit in MEM_ADDRESS_REQUIREMENTS.
server: Also enforce the size of varargs data structures.
kernel32/tests: Fix the PROCESS_BASIC_INFORMATION exit status type.
wineoss: Implement main_loop in unixlib.
winecoreaudio: Implement main_loop in unixlib.
winealsa: Implement main_loop in unixlib.
winepulse: Move main loop logic into mmdevapi.
uiautomationcore: Unconditionally match all events registered on the desktop node with a scope of subtree.
uiautomationcore: Implement UiaRaiseAutomationEvent.
uiautomationcore: Add support for cloning UiaCondition structures.
uiautomationcore: Clone UiaCacheRequest structure passed to UiaAddEvent.
uiautomationcore: Store all events in an event list.
wineps.drv: Use afm FamilyName instead of FullName.
win32u: Cleanup naming and log messages for QueryDisplayConfig.
win32u: Move QueryDisplayConfig from user32.
win32u: Move fullscreen window cursor clipping from winex11.
winex11: Move clip_fullscreen_window foreground check inside it.
win32u: Add a clipping_cursor member to user_thread_info.
win32u: Add a clipping_reset member to user_thread_info.
win32u: Move grab_pointer registry option from winex11.
winex11: Remove now unnecessary WM_X11DRV_CLIP_CURSOR_NOTIFY.
imm32: Avoid resizing IMCC to zero-size buffer.
winepulse: Return E_NOTIMPL when the property is not found.
winepulse: Don't overwrite the result in the insufficient buffer case.
wow64: Don't force wow64 dlls to load at low addresses.
winegcc: Fix an uninitialized variable warning in the PE build.
loader: Make the loader position-independent on 64-bit.
makefiles: Define WINE_UNIX_LIB for all files that are built for Unix.
include: Remove redundant __WINE_USE_MSVCRT checks.
windows.media.speech: Fix memory leak on error path in session_worker_thread_cb (scan-build).
server: Use hardware message category when checking filter.
server: Pass the message code to get_hardware_msg_bit.
user32: Add GetSystemDpiForProcess export.
ntdll: Allow RtlAllocateHeap to crash with invalid handle.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786
This MR supercedes !1895 as a solution to bug [#50771](https://bugs.winehq.org/show_bug.cgi?id=50771). Rather than fixing the problem of Wine's inability to modify the attributes of read-only files, this patch set instead implements `FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE` which the Msys2 and Cygwin runtime libriries can use to avoid needing to modify attributes.
--
v2: ntdll: Implemented FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE
ntdll/tests: Added tests for FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE
https://gitlab.winehq.org/wine/wine/-/merge_requests/3073
This MR supercedes !1895 as a solution to bug [#50771](https://bugs.winehq.org/show_bug.cgi?id=50771). Rather than fixing the problem of Wine's inability to modify the attributes of read-only files, this patch set instead implements `FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE` which the Msys2 and Cygwin runtime libriries can use to avoid needing to modify attributes.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3073
We don't need the window anymore, it was only used to send ClipCursor
notifications. This improves cursor clipping performance a lot as it
avoids re-creating a window every time.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3072
Reverting things a bit to how it was before the move to win32u, and avoid modifying the Win32 clipping rect when handling host-specific events like keyboard grabs. This temporarily releases the winex11 cursor grabs, while keeping the Win32 state unchanged and unnotified, and restores the state later when either keyboard is ungrabbed or the virtual desktop window is focused again.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55046
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3071
Adds the tray icons implementation based on org.kde.StatusNotifierItem interface usage. Does allow restarting StatusNotifierWatcher object, but will fallback to XEMBED or internal tray, if wine gets initialized when there is no StatusNotifierWatcher object registered.
--
v17: winesni.drv: replaced the dbus connection logic with a single connection per each SNI object
winesni.drv: wrap functions with pthread mutex locking
winesni.drv: implement basic balloon notification support
explorer: add winesni.drv tray implementation support
winesni.drv: add KDE StatusNotifierItem implementation for tray
https://gitlab.winehq.org/wine/wine/-/merge_requests/2808
We don't properly support persistent mapping, so don't pretend to support ARB_buffer_storage.
--
v2: opengl32: Do not report a GL version higher than 4.3 on wow64.
opengl32: Do not expose ARB_buffer_storage on wow64.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3053
Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de>
--
v3: wmphoto: Define ansi flag for JXRGlue to avoid typedef redefinitions (gcc 4.3)
libs/jxr: Compile with ansi flag to avoid typedef redefinitions (gcc 4.3)
https://gitlab.winehq.org/wine/wine/-/merge_requests/3061
--
v4: mf: Don't shutdown sink activation objects in the media session.
mf: Don't make stream sink shutdown dependent on IMFActivate presence in node.
mf: Don't leak sink in session_get_renderer_node_service().
mf: Clear queued topologies on session shutdown.
mf/tests: Add tests for samplegrabber shutdown state.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2958
This MR attempts to bring Wine's handling of `setlocale` and `_create_locale` more in line with the behavior of native >= `msvcr110`. It does this by replacing the usage of the LCID based `GetLocaleInfo` with the sname based `GetLocaleInfoEx`. `GetLocaleInfo` doesn't support neutral locales, even on native, which causes problems with neutral Chinese locales like `zh-Hans` and `zh-Hant`.
It also improves the accuracy of the internal `__lc_locale_name_func`, as tests indicate that it returns `LOCALE_SNAME`s instead of ISO 639 language names.
Potential future improvements:
* Modifying the generation of the `pclmap` and `pcumap` fields of `threadlocaleinfostruct` to work on WCHARs.
* I've done some changes to `__thread_data` which make it not fully match native, I'll submit a follow up which fixes this.
--
v2: msvcrt: Skip exhaustive locale search with valid snames.
make_unicode: rename Hong Kong SAR China to Hong Kong SAR to match native behavior.
msvcrt: Remap synonyms to snames.
msvcrt: Use snames instead of LCIDs in create_locinfo.
msvcrt: Convert locale_to_LCID to snames.
msvcrt: Use GetLocaleInfoEx to compare locale info.
msvcr120/tests: Check ___lc_locale_name_func with neutral Chinese locales.
msvcr110/tests: Add tests for new behaviors with Chinese locales.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3050
Adds the tray icons implementation based on org.kde.StatusNotifierItem interface usage. Does allow restarting StatusNotifierWatcher object, but will fallback to XEMBED or internal tray, if wine gets initialized when there is no StatusNotifierWatcher object registered.
--
v16: winesni.drv: wrap functions with pthread mutex locking
winesni.drv: implement basic balloon notification support
explorer: add winesni.drv tray implementation support
winesni.drv: add KDE StatusNotifierItem implementation for tray
https://gitlab.winehq.org/wine/wine/-/merge_requests/2808
Adds the tray icons implementation based on org.kde.StatusNotifierItem interface usage. Does allow restarting StatusNotifierWatcher object, but will fallback to XEMBED or internal tray, if wine gets initialized when there is no StatusNotifierWatcher object registered.
--
v15: winesni.drv: wrap functions with pthread mutex locking
winesni.drv: implement basic balloon notification support
explorer: add winesni.drv tray implementation support
winesni.drv: add KDE StatusNotifierItem implementation for tray
https://gitlab.winehq.org/wine/wine/-/merge_requests/2808
Redo of !1857, as suggested, the plan is to split original MR in half, breadcrumbs in first (this) MR, and address edit in another.
The changes are mostly cleanup (formatting, renaming, unused variables, missing free).
Visually, it hasn't changed from original MR, part 1 changes are:

And part 2:

Part 2 branch can be found [here](https://gitlab.winehq.org/vt/wine/-/commits/fd-navbar-part2).
Requires !2068, otherwise if application doesn't request comctl v6 (e.g. qapitrace), navigation bar will look like this:

Closes:
- https://bugs.winehq.org/show_bug.cgi?id=29912
- https://bugs.winehq.org/show_bug.cgi?id=54812
- https://bugs.winehq.org/show_bug.cgi?id=50338 (partially? fully with address edit?)
MR changes:
- v2
- Changed the gap between buttons to be scaled with DPI
Description edits:
- v2
- Updated the changes image (by splitting it)
- Added MR changes
- v3
- Added description edits
- Updated the changes image again (forgot the overflow button change)
--
v3: comdlg32: Redirect IFileDialog navigation bar buttons focus back to the previous window.
comdlg32: Retain IExplorerBrowser view focus in IFileDialog when creating new view.
comdlg32: Prevent arrow navigation of IFileDialog navigation bar buttons.
comdlg32: Don't paint focus rect in IFileDialog navigation bar buttons.
comdlg32: Add breadcrumb overflow menu to IFileDialog navigation bar.
comdlg32: Add inner border to breadcrumbs in IFileDialog navigation bar.
comdlg32: Always show at least 2 crumbs in IFileDialog navigation bar.
comdlg32: Reuse address breadcrumbs in IFileDialog navigation bar.
comdlg32: Add address breadcrumbs to IFileDialog navigation bar.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2993
--
v8: vkd3d-shader/hlsl: Handle 'texkill' jump type.
vkd3d-shader/hlsl: Parse clip() function.
tests: Add some tests for clip().
vkd3d-shader: Make some helpers available from hlsl.c.
vkd3d-shader/hlsl: Add a parameter for jump nodes and use it for 'discard'.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/211
- defining what the std handles are before inheriting them
- checking access to parent console from child through std
handles
Signed-off-by: Eric Pouech <epouech(a)codeweavers.com>
--
v2: kernel32/tests: Extend console inheritance tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3057
- defining what the std handles are before inheriting them
- checking access to parent console from child through std
handles
Signed-off-by: Eric Pouech <epouech(a)codeweavers.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3057
Unix consoles (created from initial process) are inherited by child
processes for various reasons, like keeping std handles bound to that
unix console.
This differs from Windows as the default for a GUI is not to have
console attached.
If a GUI programs asks for a console, it will succeed on Windows
but fail under Wine as the Unix console is still present.
So, allow AllocConsole() to succeed when called from a GUI program
and tied to a Unix console.
(don't do it for CUI as they are already attached to a console).
This fixes Scrap Mechanic when run with '-dev' option.
(based on suggestion from Zhiyi Zhang)
Signed-off-by: Eric Pouech <epouech(a)codeweavers.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3022
--
v4: vkd3d: Append CopyTileMappings() commands to the command queue op array.
vkd3d: Append UpdateTileMappings() commands to the command queue op array.
vkd3d: Add missing const attributes to ID3D12CommandQueue::UpdateTileMappings() parameters.
vkd3d: Validate plane count for tiled textures.
vkd3d: Validate tiled resources tier for 3D textures.
vkd3d: Validate tiled resources support during reserved resource creation.
vkd3d: Always pass null heap properties to vkd3d_create_image() for sparse images.
vkd3d: Check sparse image format is supported.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/216