Same bug class as https://gitlab.winehq.org/wine/wine/-/merge_requests/5550.
None of them are referenced by anything (not counting mfplat/main.c's debugstr_attr(), which names the two in mfapi.h - better debug output, yay I guess).
--
v5: include: Fix typoed value of CLSID_WICXMPMetadataReader.
include: Fix typoed value of MEDIASUBTYPE_P408.
include: Fix typoed values of IID_IPropertyEnumType2 and CLSID_PropertySystem.
include: Fix typoed values of IID_IMimeWebDocument and …
[View More]IID_IMimeMessageCallback.
include: Fix typoed values of MF_MT_VIDEO_3D and MF_MT_AUDIO_FOLDDOWN_MATRIX.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5559
[View Less]
On Tue Jul 9 18:18:30 2024 +0000, Dmitry Timoshkov wrote:
> Hans is correct. I have a computer that is part of the AD domain, and
> before logging into the domain GetUserNameEx(3) returns error 1332
> (ERROR_NONE_MAPPED). After entering the domain GetUserNameEx(3) returns
> name that is equal to the displayName field in the LDAP database.
> Behaviour is the same for Windows 7 and Windows 10.
Hm, interesting. I'll experiment with this and make changes to my branch accordingly. …
[View More]Thank you.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6002#note_75599
[View Less]
The handles returned by libproc (namely struct socket_info's soi_pcb)
use all 64 bits, but the ones from the pcblist sysctl are truncated
to 32. That makes find_owning_pid fail. The pcblist64 sysctl was
added in macOS 10.6 and returns handles that match those from
libproc.
--
There does not seem to be a MIB constant for pcblist64, so I had to fetch it with sysctlbyname.
--
v2: nsiproxy.sys: Use net.inet.tcp.pcblist64 to enumerate connections on macOS.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6021
On Tue Jul 9 16:44:32 2024 +0000, Tim Clem wrote:
> Whoa, whoops. Thanks, missed that when I was cleaning up the patch. I'm
> now caching the mib, which cleans things up a bit as well.
Also added the UDP version while I'm at it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6021#note_75586
This MR adds a very minimal support for new MSHTML objects bindings that will ultimately allow implementing IE9+ behavior. The plan is to have something testable that we can increment on. It's enabled only for the `Screen` object for now (which is an example of an object without custom properties with no functions). The next step is to work incrementally on enabling it for all MSHTML objects.
A few comments on the approach:
- The object and its jscript representation share reference counter. …
[View More]This may not be optimal, but it essentially preserves the current behavior where MSHTML is responsible for tracking it. I expect that we will want to revisit that when integrating cycle collector with jscript.
- Deleting properties is not yet supported; this will need another function in the interface, but it's not yet needed as we currently don't allow deleting builtin properties anyway (and custom properties are skipped in this MR as they are not needed for the `Screen` object).
- Functions are not yet supported, only old-style properties (not accessor properties yet). They are straightforward to support on top of it by extending `property_info` struct to pass iid and implementing them as jscript function.
- This does not yet allow host properties to appear and disappear without notifications. This is a limitation of jscript's `dispex.c` (not the interface), which will need to be tweaked before we use new bindings for objects that require it.
--
v2: mshtml: Use IWineJSDispatch for screen object script bindings.
mshtml: Support using IWineJSDispatch for DispatchEx implementation.
mshtml: Pass an optional script global window to init_dispatch.
mshtml: Implement jscript IWineJSDispatchHost.
jscript: Use jsdisp_t internally for host objects that support it.
jscript: Support host objects in disp_cmp.
jscript: Support converting host objects to string.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6029
[View Less]
This MR adds a very minimal support for new MSHTML objects bindings that will ultimately allow implementing IE9+ behavior. The plan is to have something testable that we can increment on. It's enabled only for the `Screen` object for now (which is an example of an object without custom properties with no functions). The next step is to work incrementally on enabling it for all MSHTML objects.
A few comments on the approach:
- The object and its jscript representation share reference counter. …
[View More]This may not be optimal, but it essentially preserves the current behavior where MSHTML is responsible for tracking it. I expect that we will want to revisit that when integrating cycle collector with jscript.
- Deleting properties is not yet supported; this will need another function in the interface, but it's not yet needed as we currently don't allow deleting builtin properties anyway (and custom properties are skipped in this MR as they are not needed for the `Screen` object).
- Functions are not yet supported, only old-style properties (not accessor properties yet). They are straightforward to support on top of it by extending `property_info` struct to pass iid and implementing them as jscript function.
- This does not yet allow host properties to appear and disappear without notifications. This is a limitation of jscript's `dispex.c` (not the interface), which will need to be tweaked before we use new bindings for objects that require it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6029
[View Less]
Hans is correct. I have a computer that is part of the AD domain, and before logging into the domain GetUserNameEx(3) returns error 1332 (ERROR_NONE_MAPPED). After entering the domain GetUserNameEx(3) returns name that is equal to the displayName field in the LDAP database. Behaviour is the same for Windows 7 and Windows 10.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6002#note_75556
This is part XVIII of cmd engine rewrite.
It mainly focuses on setting the expected return code for
some builtin functions.
Includes also a fix for pipe inside a redirection (spotted by
the added tests).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6028
This MR adds support for creating file mapping objects backed by large pages on Linux, by making the following changes:
## wineserver
* On Linux, `create_temp_file` will first attempt to use memfds as the backing fd. If it fails, it'll return to the current codepath, creating a temporary file in either the server or config directory.
* The created memfd will be sealed against writes, if the caller requesting the appropriate page protection flags.
* This removes the requirement that FDs be …
[View More]only created on filesystems/directories that aren't `noexec`.
* In the server method `create_mapping` , if large pages have been requested by the caller, hold that the calling thread's token holds `SeLockMemoryPrivilege` .
* Additionally, add `SeLockMemoryPrivilege` to the list of privileges enabled for the Administrator.
## `ntdll`
* Add `virtual_get_min_large_page_size` and its exported wrapper `wine_unix_get_min_large_page_size`.
* On Linux, the minimum page size is determined by going through `/sys/kernel/mm/hugepages`. If hugepage support was not detected, `STATUS_NOT_SUPPORTED` is returned instead. On other platforms, the older hard-coded value of 2\*1024\*1024 is returned instead.
* `NtCreateSection` will validate certain parameters if large pages are requested. Specifically, it will return STATUS_INVALID_PARAMETER if the requested mapping is not anonymous/unnamed, or the size is not a multiple of the minimum supported page size.
## `kernelbase`
* `GetLargePageMinimum` will use `wine_unix_get_min_large_page_size`.
## `kernel32/tests`
* Add new test test_large_page_file_mapping, which validates privilege enforcements and parameter validation while creating large pages backed file mapping obejcts. The tests are skipped if `GetLargePageMinimum` returns 0.
--
v35: advapi32: Fake the SeLockMemoryPrivilege right in LsaEnumerateAccountRights.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5769
[View Less]
I was hoping that the new tests would provide evidence that RtlQueryRegistryValues uses RegGetValue to ensure that multi-strings are double-null-terminated. Instead the tests suggest that my hypothesis was wrong because RegGetValue only ensures single null termination, not double null termination. We should fix RegGetValue anyway for the sake of applications that expect it to null-terminate.
--
v9: kernelbase: Ensure null termination in RegGetValue[AW].
https://gitlab.winehq.org/wine/wine/-/merge_requests/5969
I was hoping that the new tests would provide evidence that RtlQueryRegistryValues uses RegGetValue to ensure that multi-strings are double-null-terminated. Instead the tests suggest that my hypothesis was wrong because RegGetValue only ensures single null termination, not double null termination. We should fix RegGetValue anyway for the sake of applications that expect it to null-terminate.
--
v8: kernelbase: Ensure null termination in RegGetValue[AW].
https://gitlab.winehq.org/wine/wine/-/merge_requests/5969
In my tests GetUserNameEx(NameDisplay) returns ERROR_NONE_MAPPED on Windows. It seems that the Windows machine needs to be joined to a Windows domain for this call to return something sensible. Do you have an application that depends this?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6002#note_75538
The handles returned by libproc (namely struct socket_info's soi_pcb)
use all 64 bits, but the ones from the pcblist sysctl are truncated
to 32. That makes find_owning_pid fail. The pcblist64 sysctl was
added in macOS 10.6 and returns handles that match those from
libproc.
--
There does not seem to be a MIB constant for pcblist64, so I had to fetch it with sysctlbyname.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6021
I was hoping that the new tests would provide evidence that RtlQueryRegistryValues uses RegGetValue to ensure that multi-strings are double-null-terminated. Instead the tests suggest that my hypothesis was wrong because RegGetValue only ensures single null termination, not double null termination. We should fix RegGetValue anyway for the sake of applications that expect it to null-terminate.
--
v10: kernelbase: Ensure null termination in RegGetValue[AW].
https://gitlab.winehq.org/wine/wine/-/merge_requests/5969
I was hoping that the new tests would provide evidence that RtlQueryRegistryValues uses RegGetValue to ensure that multi-strings are double-null-terminated. Instead the tests suggest that my hypothesis was wrong because RegGetValue only ensures single null termination, not double null termination. We should fix RegGetValue anyway for the sake of applications that expect it to null-terminate.
--
v7: kernelbase: Ensure null termination in RegGetValue[AW].
https://gitlab.winehq.org/wine/wine/-/merge_requests/5969
I was hoping that the new tests would provide evidence that RtlQueryRegistryValues uses RegGetValue to ensure that multi-strings are double-null-terminated. Instead the tests suggest that my hypothesis was wrong because RegGetValue only ensures single null termination, not double null termination. We should fix RegGetValue anyway for the sake of applications that expect it to null-terminate.
--
v6: kernelbase: Ensure null termination in RegGetValue[AW].
windowscodecs: Use …
[View More]RegQueryValueExW in ComponentInfo_GetStringValue.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5969
[View Less]
This is based on work done by Andrew Eikum. It has been in some form in Proton for the last 4 years.
If server's sampling rate is not 48kHz **DOOM Eternal** will try to set it 48kHz for the streams using the implemented interface. There's a whole class of audio devices that use 44.1kHz sampling rate and at least PulseAudio / PipeWire tends to inherit the value from the hardware to avoid resampling. The value can also be overridden by the user via the audio server's config files.
In such cases,…
[View More] if the interface is not present or stubbed, this results in **audio underruns and noticeable crackling**.
It's easy to test with pipewire-pulse:
```
$ cat /etc/pipewire/pipewire.conf.d/sample-rate.conf
context.properties = {
default.clock.rate = 41100
}
```
With PulseAudio this should be doable via setting `default-sample-rate = 41100` in `/etc/pulse/daemon.conf`.
--
v4: winepulse.drv: Implement set_sample_rate.
mmdevapi: Implement AudioClockAdjustment_SetSampleRate.
mmdevapi: Add stub IAudioClockAdjustment implementation.
mmdevapi/tests: Add more IAudioClock tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5585
[View Less]
If both buffers are DXGI buffers, they can be copied on the GPU. They
are currently transferred to the CPU, copied by the CPU and then
transferred back to the GPU.
Performing a GPU copy produces ~25% faster playback on 4K video.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5979
I believe that using CPP files in core Wine code is not a good idea. But it would be nice to have the option to compile C++ modules. For example, lsteamclient from Proton is written partially in C++.
Based on @rbernon patch.
--
v2: tools/makedep: Allow building modules with C++ sources.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6009
--
v2: win32u: Use the thread input shared memory for NtUserGetGUIThreadInfo.
win32u: Use the thread input shared memory for NtUserGetCursorInfo.
win32u: Use the thread input shared memory for NtUserGetForegroundWindow.
server: Add cursor handle and count to desktop shared memory.
server: Add a foreground flag to the thread input shared memory.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5995
mf/session: Ensure that the command callback does not return without clearing SESSION_FLAG_PENDING_COMMAND.
Leaving SESSION_FLAG_PENDING_COMMAND set results in no more work items being queued by session_submit_command, and even
if they were, callback would return immediately due to a check at the start of the function.
Thus, it is never valid to leave the function without clearing the SESSION_FLAG_PENDING_COMMAND flag.
This case can be hit by SESSION_CMD_START, and leaves the session unable …
[View More]to process any commands.
Fix this by ensuring that SESSION_FLAG_PENDING_COMMAND is always cleared before the command callback returns.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6011
[View Less]
I believe that using CPP files in core Wine code is not a good idea. But it would be nice to have the option to compile C++ modules. For example, lsteamclient from Proton is written partially in C++.
Based on @rbernon patch.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6009
Adds the registry key
HKEY_CURRENT_USER\\Software\\Wine\\Wayland Driver\\rawinput
witch allows mouse raw input. This makes it easier
to calculate the same sensitivity in different games,
use sensitivity calculators, and easily change values
when changing mouse DPI and do not depend on the compositor or OS.
For example, you want to set the sensitivity to half as much,
but sensitivity curves in libinput are more difficult
to calculate than mouse sensitivity in the games.
Implementation of ideas …
[View More]written in the comments: https://gitlab.winehq.org/wine/wine/-/merge_requests/4698
--
v6: winewayland.drv: Add mouse rawinput support
https://gitlab.winehq.org/wine/wine/-/merge_requests/5869
[View Less]
This reverts commit 5c8ea25014f ("ntdll: Use CLOCK_REALTIME_COARSE for
NtQuerySystemTime() if it has sufficient resolution.")
CLOCK_*_COARSE only provides up to 1ms resolution at CONFIG_HZ=1000.
OTOH, there are several ways to get up to 0.5ms resolution on modern
Windows (high resolution waitable timers, NtSetTimerResolution with
0.5ms). This code path therefore has a possibility of behaving worse
than native.
Since COARSE resolution is HZ dependent, this code path only runs if the
kernel is …
[View More]configured with CONFIG_HZ=1000. Most distro ships does not
ship with this. Therefore, this code path is rarely tested, and is more
of a recipe for surprise. If any application rely on fast
NtQuerySystemTime they are likely already broken for majority of Wine
users.
Given the above reason, don't use CLOCK_REALTIME_COARSE. Use
gettimeofday which is internally hooked to CLOCK_REALTIME.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6007
[View Less]
--
v2: comctl32/tests: Add tests for NULL strings with edit control WM_GETTEXT message.
user32: Fail on NULL string in WM_GETTEXT AtoW wrapper.
comctl32: Fail on NULL string for edit control WM_GETTEXT message.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6004
Dropping the workarounds for Windows versions that we don't care about anymore makes it easier to understand what these tests are doing and what's going wrong when they fail.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6001
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44863
The bug has been fixed already by moving ddraw4 vertex buffers into
system memory. Changing this value makes the game create a smaller
buffer, which makes the game fast on video memory buffers. I think we
should stay close to what Windows drivers report even though we
mitigated the original issue in a different way.
--
v2: ddraw: Set dwMaxVertexCount to 2048.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5687
--
v2: win32u: Simplify the logic for driver messages polling.
win32u: Use the thread message queue shared memory in peek_message.
win32u: Allocate heap in peek_message only when necessary.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5970
> Onimusha: Warlords doesn't even use H264 and has several other problems. None of these games need H264 to be explicitly exposed, they only need compressed output.
This merge request isn't about H.264; it's about compressed samples in general. 1/3 and 2/3 are here because H.264 needs slightly special treatment.
> This is also only making my work on upstreaming Proton changes more difficult and I don't really understand what you are trying to achieve here.
The purpose of 3/3 is to fix …
[View More]bugs related to applications explicitly or implicitly assuming that the media source outputs compressed samples.
What changes does it make more difficult to upstream?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5988#note_75210
[View Less]
This is part XVI of cmd engine rewrite.
Nothing fancy, mainly setting success/failure return code
for a bunch of commands.
Some code cleanup.
--
v2: programs/cmd: Set success/failure return code for LABEL command.
programs/cmd: Set success/failure return code for VOL command.
programs/cmd: Set success/failure return code for VERIFY command.
programs/cmd: Set success/failure return code for VER command.
programs/cmd: Set success/failure return code for DATE TIME …
[View More]commands.
programs/cmd: Set success/failure return code for SETLOCAL/ENDLOCAL commands.
programs/cmd/tests: Test success / failure for more commands.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5997
[View Less]
The source reader accepts incomplete output types that decoders don't.
This is for instance the case with audio types with only a subtype but
no MF_MT_AUDIO_BITS_PER_SAMPLE attribute specified.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5989
First part of a series introducing a separate unix interface for the MF media source. The goal is to use a synchronous demuxing-only interface, similar to native, which will be simpler and faster and better fitted to most MF media source use cases.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5998