After applying a theme with CaptionBarHeight set, caption height from SPI_GETNONCLIENTMETRICS is set
to the specified size. However in refresh_sysparams(), the caption height is refreshed and the value
from SM_CXSIZE is used and ends up overwriting the theme specified caption height. SM_CYSIZE is the
correct index instead of SM_CXSIZE.
You may need to turn a theme off and on for the correct caption height to take effect after the fix.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1217
A mix of a miscellaneous fixes:
* Fixes to failed asserts I have stumbled upon when implementing other features.
* Checks required for properly supporting object components.
* A couple of code improvements.
--
v4: vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.
vkd3d-shader/hlsl: Use the base type of the array elements in write_sm1_type().
vkd3d-shader/hlsl: Validate that statics don't contain both resources and numerics.
vkd3d-shader/hlsl: Validate that extern structs don't contain objects SM < 5.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/42
Overwatch 2 verifies that every kernel callback that is run, lives in user32. Introduce a callback in user32 that just forwards to the other modules' callbacks.
--
v9: user32: Remove NtUserDriverCallback* kernel callbacks.
winex11.drv: Route kernel callbacks through user32.
winemac.drv: Route kernel callbacks through user32.
wineandroid.drv: Route kernel callbacks through user32.
winevulkan: Route kernel callbacks through user32.
user32: Add NtUserDispatchCallback kernel callback.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1180
For https://gitlab.winehq.org/wine/wine/-/merge_requests/551.
--
v2: winex11.drv: Use the primary adapter info instead of calling back win32u.
win32u: Add is_primary parameter to GetCurrentDisplaySettings.
winemac.drv: Use the primary adapter name instead of calling back win32u.
win32u: Add primary adapter name parameter to ChangeDisplaySettings.
win32u: Force update display cache after NtUserChangeDisplaySettingsEx.
win32u: Add a BOOL force parameter to update_display_cache.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1136
The previously used syntax, -Wl,-pdb,<file>, was the originally
supported one in lld (since 2018). Later (in 2019) the second
syntax was added, allowing both -Wl,-pdb=<file> and -Wl,-pdb,<file>.
(This other parameter syntax allows easier distinguishing an empty
argument, for letting the linker implicitly pick the file name.)
Move over to using the more modern syntax - reducing the usage of
the old form of the option. This potentially allows deprecating
the original syntax and maybe allows using --pdb as a boolean
flag for implying an automatically named PDB file (which currently
requires using the awkward syntax "--pdb=").
Also prefer the long two dashes form, i.e. --pdb instead of -pdb;
the single dash form is only allowed by getopt when there
are no conflicts with single-letter options, while the form with
two dashes is unambiguous.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1200
A mix of a miscellaneous fixes:
* Fixes to failed asserts I have stumbled upon when implementing other features.
* Checks required for properly supporting object components.
* A couple of code improvements.
--
v3: vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.
vkd3d-shader/hlsl: For arrays, return components' base type in sm1_base_type().
vkd3d-shader/hlsl: Validate that objects are not components of structs in shader models < 5.
tests: Add SM5 requirement to tests with object components.
vkd3d-shader/hlsl: Don't allocate object types as constant registers.
vkd3d-shader/hlsl: Make hlsl_type_get_component_type() type argument const.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/42
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
--
v2: ntdll: Add CFI unwind info to __wine_syscall_dispatcher (i386).
https://gitlab.winehq.org/wine/wine/-/merge_requests/1182
This series is mainly a change in internal structures for
describing functions:
- symt_function doesn't support multi range of addresses
- while symt_inlinesite does
That's the major difference between the two.
So the aim of this serie is to decribe function and inline sites with
a single structure.
--
v2: dbghelp: Get rid of symt_inlinesite by merging it inside symt_function.
dbghelp: Use addr_range for storing symt_function address and size.
dbghelp: Store address range as FAM in symt_inlinesite.
dbghelp: No longer pass inline site's address upon creation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1161
Overwatch 2 verifies that every kernel callback that is run, lives in user32. Introduce a callback in user32 that just forwards to the other modules' callbacks.
--
v8: user32: Remove NtUserDriverCallback* kernel callbacks.
winex11.drv: Route kernel callbacks through user32.
winemac.drv: Route kernel callbacks through user32.
wineandroid.drv: Route kernel callbacks through user32.
winevulkan: Route kernel callbacks through user32.
user32: Add NtUserDispatchCallback kernel callback.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1180
Don't translate imported static libraries paths to -Ldir -lfoo form. It's no longer needed, we use -nodefaultlibs anyway. Fixes clang MSVC build that expects foo.lib file name when using -lfoo.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1175
Overwatch 2 verifies that every kernel callback that is run, lives in user32. Introduce a callback in user32 that just forwards to the other modules' callbacks.
--
v7: user32: Remove NtUserDriverCallback* kernel callbacks.
winex11.drv: Route kernel callbacks through user32.
winemac.drv: Route kernel callbacks through user32.
wineandroid.drv: Route kernel callbacks through user32.
winevulkan: Route kernel callbacks through user32.
user32: Add NtUserDispatchCallback kernel callback.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1180
--
v5: mshtml: Implement document.referrer.
mshtml: Implement document.mimeType.
mshtml: Get rid of a EVENTID_LAST special case.
mshtml: Allow null or undefined func in addEventListener.
mshtml: Allow null or undefined listeners in attachEvent/detachEvent.
jscript: Implement VariantChangeType for VT_DISPATCH and VT_UNKNOWN.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1172
A mix of a miscellaneous fixes:
* Fixes to failed asserts I have stumbled upon when implementing other features.
* Checks required for properly supporting object components.
* A couple of code improvements.
--
v2: vkd3d-shader/hlsl: Use reg_size as component count when allocating a single register.
vkd3d-shader/hlsl: For arrays, return components' base type in sm1_base_type().
vkd3d-shader/hlsl: Validate that objects are not components of structs in shader models < 5.
tests: Add SM5 requirement to tests with object components.
vkd3d-shader/hlsl: Don't allocate object types as constant registers.
vkd3d-shader/hlsl: Make hlsl_type_get_component_type() type argument
vkd3d-shader/hlsl: Properly free new store node memory if init_deref() fails.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/42
A mix of a miscellaneous fixes:
* Fixes to failed asserts I have stumbled upon when implementing other features.
* Checks required for properly supporting object components.
* A couple of code improvements.
--
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/42
Overwatch 2 verifies that every kernel callback that is run, lives in user32. Introduce a callback in user32 that just forwards to the other modules' callbacks.
--
v6: user32: Remove NtUserDriverCallback* kernel callbacks.
winex11.drv: Route kernel callbacks through user32.
winemac.drv: Route kernel callbacks through user32.
wineandroid.drv: Route kernel callbacks through user32.
winevulkan: Route kernel callbacks through user32.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1180
Overwatch 2 verifies that every kernel callback that is run, lives in user32. Introduce a callback in user32 that just forwards to the other modules' callbacks.
--
v5: user32: Remove NtUserDriverCallback* kernel callbacks.
winex11.drv: Route kernel callbacks through user32.
winemac.drv: Route kernel callbacks through user32.
wineandroid.drv: Route kernel callbacks through user32.
winevulkan: Route kernel callbacks through user32.
make_vulkan
https://gitlab.winehq.org/wine/wine/-/merge_requests/1180
Overwatch 2 verifies that every kernel callback that is run, lives in user32. Introduce a callback in user32 that just forwards to the other modules' callbacks.
--
v4: make_vulkan
user32: Remove NtUserDriverCallback* kernel callbacks.
winex11.drv: Route kernel callbacks through user32.
winemac.drv: Route kernel callbacks through user32.
wineandroid.drv: Route kernel callbacks through user32.
winevulkan: Route kernel callbacks through user32.
user32: Add NtUserDispatchCallback kernel callback.
user.exe16: Move kernel callbacks to wow_callbacks.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1180
--
v3: opengl32: Use the unixlib interface for WGL functions.
opengl32: Use the unixlib interface for EXT functions.
opengl32: Move the null functions to unix_thunks.c.
opengl32: Use the unixlib for glGet(String|Integerv).
opengl32: Create a unixlib interface for GL functions.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1087
Enforce proper atomic update so that other threads do not read stale
data from IO_STATUS_BLOCK.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v12: ntdll: Fix reading stale Information from IOSB.
https://gitlab.winehq.org/wine/wine/-/merge_requests/155
Enforce proper atomic update so that other threads do not read stale
data from IO_STATUS_BLOCK.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v11: ntdll: Fix reading stale Information from IOSB.
https://gitlab.winehq.org/wine/wine/-/merge_requests/155
Enforce proper atomic update so that other threads do not read stale
data from IO_STATUS_BLOCK.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v10: ntdll: Fix reading stale Information from IOSB.
ws2_32: Access internal fields of WSAOVERLAPPED as IO_STATUS_BLOCK.
kernelbase: Access internal fields of OVERLAPPED as IO_STATUS_BLOCK.
https://gitlab.winehq.org/wine/wine/-/merge_requests/155
Enforce proper atomic update so that other threads do not read stale
data from IO_STATUS_BLOCK.
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v9: ntdll: Fix reading stale Information from IOSB.
https://gitlab.winehq.org/wine/wine/-/merge_requests/155
Signed-off-by: Jinoh Kang <jinoh.kang.kr(a)gmail.com>
--
v7: server: Don't invalidate the newly exposed child region on the parent if it doesn't clip children.
server: Redraw composited window child when its z-order changes.
server: Correctly expose composited parent window and its child on position change.
https://gitlab.winehq.org/wine/wine/-/merge_requests/231
--
v4: mshtml: Implement document.referrer.
mshtml: Implement document.mimeType.
mshtml: Get rid of a EVENTID_LAST special case.
mshtml: Allow null or undefined func in addEventListener.
mshtml: Allow null or undefined listeners in attachEvent/detachEvent.
jscript: Implement VariantChangeType for VT_DISPATCH and VT_UNKNOWN.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1172
This is wine-7.0.1-rc1, so not ready yet to merge.
--
v6: Release 7.0.1.
gitlab: Import the gitlab CI from the master branch (devel tree)
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/955
> Also want to point out that I split test changes across both commits earlier, marking device context bit as todo, so that each pass tests. A bit hidden if not looking at individual commits in diffs.
Yes, that's the correct way - tests should pass on each commit.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1183#note_12460
Oops, silly oversights.
Also want to point out that I split test changes across both commits earlier, marking device context bit as todo, so that each pass tests.
A bit hidden if not looking at individual commits in diffs.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1183#note_12459
- the tests were failing in Hindi/UTF8
- rounding with (lo+(hi-lo+1)/2) let all the tests pass
- rounding with (lo+(hi-lo)/2 + 1) (as it's done when
ES_MULTILINE is enabled) let the Hindi/UTF8 fail
- it looked weird to have different rounding computation
in single vs multi line
- so, changing all rounding to (lo+(hi-lo+1)/2) let all
the tests pass
Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1184
mrac tries to get function pointers for these functions using MmGetSystemRoutineAddress, I haven't seen them being used by it, but might as well implement it since they are very easy to implement.
--
v6: ntoskrnl.exe: Implement KeQueryActiveProcessorCount.
ntoskrnl.exe: implement KeQueryMaximumProcessorCount/Ex.
https://gitlab.winehq.org/wine/wine/-/merge_requests/914
mrac tries to get function pointers for these functions using MmGetSystemRoutineAddress, I haven't seen them being used by it, but might as well implement it since they are very easy to implement.
--
v5: ntoskrnl.exe: implement KeQueryMaximumProcessorCount/Ex.
ntoskrnl.exe: implement KeQueryActiveProcessorCount.
https://gitlab.winehq.org/wine/wine/-/merge_requests/914
Based on [a patch](https://www.winehq.org/mailman3/hyperkitty/list/wine-devel@winehq.or… by Jinoh Kang (@iamahuman) from February 2022.
I removed the need for the event object and implemented fast paths for Linux.
On macOS 10.14+ `thread_get_register_pointer_values` is used on every thread of the process.
On Linux 4.14+ `membarrier(MEMBARRIER_CMD_GLOBAL_EXPEDITED, ...)` is used.
On x86 Linux <= 4.13 `madvise(..., MADV_DONTNEED)` is used, which sends IPIs to all cores causing them to do a memory barrier.
On non-x86 Linux <= 4.2 and on other platforms the fallback path using APCs is used.
--
v6: ntdll: Add thread_get_register_pointer_values-based fast path for NtFlushProcessWriteBuffers.
ntdll: Add sys_membarrier-based fast path to NtFlushProcessWriteBuffers.
ntdll: Add MADV_DONTNEED-based fast path for NtFlushProcessWriteBuffers.
ntdll: Make server_select a memory barrier.
ntdll: Implement NtFlushProcessWriteBuffers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/741
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50955
The problem which this patchset aims to solve is (sometimes) huge timeout on TCP listening port availability on Linux after the listening socket was closed one or another way. By default, the listening port will also be blocked for the whole time accepted socket waits through lengthy timeouts (sometimes; most surely when the listening process with an active connection was force killed, but not limited to this condition).
BSD SO_REUSEADDR socket option is aimed mainly to avoid that extra wait on binding already closed listening socket address. From [1]: "Indicates that the rules used in validating addresses supplied in a bind(2) call should allow reuse of local addresses. For AF_INET sockets this means that a socket may bind, except when there is an active listening socket bound to the address.".
Unix SO_REUSEADDR does not really allow reusing address in the Winsock sense. It will just allow to ditch the timeout (which is always the case on Windows without any specific options). Unfortunately it is not the only effect of the option. It still won't allow listening on the address simultaneously (unlike Winsock SO_REUSEADDR which allows simultaneous listening), or binding to an address which is being listened. But it will allow to bind different sockets for the same address which is not the Winsock behaviour when Winsock SO_REUSEADDR is set.
So the patchset enables SO_REUSEADDR on every TCP socket and introduces the bound address tracking which will allow to return an error from bind() when needed.
Not related to this patchset, but Winsock SO_REUSEADDR is somewhat closer to BSD SO_REUSEPORT, although is different in a way that _REUSEPORT will load balance connections between listeners while with Winsock _REUSEADDR the connections will always go to the first listener.
I hope that the bound addresses tracking introduced in these patches may be reused in the future. E. g., maybe it might be helpful on the way of implementing the todos introduced by my extended tests (those todos are not related to this patchset and exist both with and without it).
1. https://man7.org/linux/man-pages/man7/socket.7.html
--
v5: ws2_32/tests: Also test bind to any together with loopback in a different order.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1111
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50955
The problem which this patchset aims to solve is (sometimes) huge timeout on TCP listening port availability on Linux after the listening socket was closed one or another way. By default, the listening port will also be blocked for the whole time accepted socket waits through lengthy timeouts (sometimes; most surely when the listening process with an active connection was force killed, but not limited to this condition).
BSD SO_REUSEADDR socket option is aimed mainly to avoid that extra wait on binding already closed listening socket address. From [1]: "Indicates that the rules used in validating addresses supplied in a bind(2) call should allow reuse of local addresses. For AF_INET sockets this means that a socket may bind, except when there is an active listening socket bound to the address.".
Unix SO_REUSEADDR does not really allow reusing address in the Winsock sense. It will just allow to ditch the timeout (which is always the case on Windows without any specific options). Unfortunately it is not the only effect of the option. It still won't allow listening on the address simultaneously (unlike Winsock SO_REUSEADDR which allows simultaneous listening), or binding to an address which is being listened. But it will allow to bind different sockets for the same address which is not the Winsock behaviour when Winsock SO_REUSEADDR is set.
So the patchset enables SO_REUSEADDR on every TCP socket and introduces the bound address tracking which will allow to return an error from bind() when needed.
Not related to this patchset, but Winsock SO_REUSEADDR is somewhat closer to BSD SO_REUSEPORT, although is different in a way that _REUSEPORT will load balance connections between listeners while with Winsock _REUSEADDR the connections will always go to the first listener.
I hope that the bound addresses tracking introduced in these patches may be reused in the future. E. g., maybe it might be helpful on the way of implementing the todos introduced by my extended tests (those todos are not related to this patchset and exist both with and without it).
1. https://man7.org/linux/man-pages/man7/socket.7.html
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1111