While adding tests for this I also find a couple of things related to previous MR 1111 which I am also fixing here:
- it turns out IPV6 loopback (as in "::1") should not be mapped to ipv4-mapped loopback, ipv6 and ipv4 loopbacks are different addresses. The mapping of that was also missing htonl() for INADDR_LOOPBACK so essentially didn't break anything;
- basically the same is for INADDR_ANY (ipv6 "any" doesn't prevent binding to ipv4 "any"), although that is different when SO_EXCLUSIVEADDRUSE is used: in that case ipv6 wildcard address actually blocks ipv4 INADDR_ANY.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1196
This increases the QoS class of the main Wine thread from default to user-interactive.
`pthread_attr_set_qos_class_np` was added in the 10.10 SDK, which is our minimum requirement already.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1232
Some fonts can end up with too low height for some sizes, resulting in ppem == 0, which can lead to some metrics becoming 0 too, especially tmHeight and tmAveCharWidth. This behavior is also observed on Windows, but on Linux it could lead to division by zero. This was noticed with the font `Emmentaler-Brace`, which comes with TexLive and GNU LilyPond, in the comctl32 status test.
This patch set also tries to make the Wine behavior closer to the Windows one by enabling tmAveCharWidth to be 0 and preventing it and tmHeight from causing divisions by zero. This is very much an edge case, and I don't know if it has caused problems in actual programs, so I don't know if it would be worth it to make the behavior match exactly. But this way at least the tests should pass if some incomplete/misconfigured fonts are installed.
I mainly limited myself to win32u. I'm not sure if these changes could affect behavior in other parts of the codebase, but the tests seems unchanged.
--
v2: win32u: Allow tmAveCharWidth to be 0.
win32u: Prevent division by 0 in get_transform_matrices().
win32u: check if tmAveCharWidth is 0 before division.
win32u: Do not use SCALE_NTM if TM.tmHeight == 0.
win32u: Warn when ppem == 0.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1192
This series improves Wine's support for delete-on-close flag and
delete disposition information on files:
- adapts tests for Windows 10
- extend and fix some tests
- implement some missing features in ntdll & server
--
v2: server: Let file creation fail depending unlink status.
server: Propagate the unlink status to all opened/closed files.
ntdll: Query FILE_STANDARD_INFORMATION.DeletePending from server.
ntdll: Extend file tests about delete-on-close and disposition.
ntdll: Fix share mode for some delete-on-close/delete disposition tests.
ntdll: Adapt file tests on delete-on-close / delete disposition to Windows 10.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1231
This series improves Wine's support for delete-on-close flag and
delete disposition information on files:
- adapts tests for Windows 10
- extend and fix some tests
- implement some missing features in ntdll & server
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1231
This change is adding DWARF (CFI) unwind information to the
hand-written assembly of the `__wine_syscall_dispatcher` function.
This enables unwinding through the dispatcher from the Linux stack
into (and through) the Windows stack.
The general idea is that the `syscall_frame` struct contains the
content of the callee-save registers before the function call
(in particular the stack pointer and the return address). At any
point of the execution, we have a pointer into the `syscall_frame`
in $ebx, $ecx, $ebp, or $esp.
For the CFI codes the general idea is that we are defining the
computations of the callee-save registers based on the
`syscall_frame` using DWARF’s `breg` instruction, rather than
relative to CFA.
cc/ @florian-kuebler
--
v4: ntdll: Add CFI unwind info to __wine_syscall_dispatcher (i386).
ntdll: Move CFI helper macros out of signal_x86_64.c.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1182
The storage event url prop fix is tested after the location.hash tests are added, implicitly. I didn't find a need to add extra tests for no reason there.
The super_navigate changes for fragments is also necessary for the location.hash tests (and its behavior, apparently)…
--
v2: mshtml: Implement document.importNode.
mshtml: Implement HTMLLocation_put_hash.
mshtml: Always use super_navigate when navigating fragments.
mshtml: Don't include fragment in storage event's url prop.
mshtml: Return E_ABORT if wine-gecko's OnDataAvailable aborts the binding.
mshtml: Improve locale stub for KeyboardEvent.
mshtml: Implement isContentEditable for HTML elements.
mshtml/tests: Handle broken localStorage on native.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1206
With this series it's now possible to run and pass `user32:monitor` and `user32:sysparams` tests with nulldrv, and so most `user32` tests (except for a few desktop cursor position tests). This still requires some prefix configuration to enable the nulldrv driver, or a change like https://gitlab.winehq.org/rbernon/wine/-/commit/753368ad0ec52f03f8d6e78ca79… to enable it when `DISPLAY` environment variable is unset.
This then shows that some of the user32 tests are failing with winex11 but passing with nulldrv, as in https://gitlab.winehq.org/rbernon/wine/-/commit/6d5f4109a514a0dc266899fcacf….
--
v12: win32u: Read mode from the registry if GetCurrentDisplaySettings fails.
win32u: Write display settings to the registry in apply_display_settings.
win32u: Lock display devices while applying display settings.
https://gitlab.winehq.org/wine/wine/-/merge_requests/551