First of all it fixes a regression introduced by 5a7ff3b45c78784dca0a465d9e21483f72bce6e5 when surface handles were moved to global table but SwapTextureHandles was left behind (https://bugs.winehq.org/show_bug.cgi?id=57300).
Then, I am fixing a couple of more issues with this function spotted on the way.
I did some initial testing of SwapTextures across devices and that looks messy, device on which the swap is performed influences the outcome in some not immediately obvious way. I omitted the investigation of that because multiple 3d devices in ddraw is already a very exotic use case and I think we are unlikely to meet the usage of SwapTextures across multiple devices.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6658
Testing on Windows shows that the owner of GetDesktopWindow() always has a default admin token with `TokenElevationTypeDefault`, no matter the token of the process/thread that is responsible for creating it.
We've had issues in this area in the past - 99e2fad1 was a case where it was important that explorer not inherit the token of the *process* spawning it, but instead the token of the *thread*. This patch keeps that app working, since now explorer will get a default token regardless.
In addition to the privilege issues from 99e2fad1, it is a relatively common pattern to duplicate the token of the owner of GetDesktopWindow to acquire a default token.
--
v2: services: Apply a default admin token to the process.
ntdll: Count default-elevation admin tokens as elevated from NtQueryInformationToken(TokenElevation).
Revert "win32u: Create explorer with the thread effective access token."
explorer: Apply a default admin token when running for the desktop.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6602
This is the first set of patches to move targa decoding out of WIC and into d3dx9. The eventual goal is to add support for saving targa files.
I've pushed a branch with the rest of the patches for decoding the image [here](https://gitlab.winehq.org/cmcadams/wine/-/tree/WIP/d3dx9-targa-decode… if extra context would help. I split this into two parts to make review a little less overwhelming. :)
--
v2: d3dx9: Use d3dx9 to get image information for targa files.
d3dx9/tests: Add TGA header image info tests.
d3dx9: Do not use WIC to detect image file format.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6673
For Gitlab to detect and report the failing tests directly on the MR front page. This has the disadvantage of making the test job output more silent, but the results are still available as artifacts (in JUnit XML format), which hopefully should be enough if we need to have a better look at it. The tests standard output is included in the reports too.
I believe it would also show some failure statistics that could help deciding on whether a test is regularly failing or not, but I wasn't able to really test that it does. In order to help it doing it, it also implements hashing of test sources to generate test IDs that are more stable than `source:line`, although it could be done later.
All the succeeding (and todo) tests are grouped together and reported as once, as they would otherwise be split into individual success lines in the Gitlab UI, which would make it unnecessary large. Only failures and skipped tests are reported as individual entries.
--
v2: gitlab: Use winetest JUnit output mode.
winetest: Implement JUnit report output mode.
winetest: Introduce some test report helpers.
winetest: Pass output file handle to xprintf.
winetest: Always use a temporary file for test output.
winetest: Add printf attributes to xprintf.
winetest: Add printf attributes to strmake.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6672
Since 4e06b87633ec7e04822ad4f4854df7ae43f0d7e0, we are moving the window rects,
which is in screen coordinates for the old rects, because invalidate_dce expects
it, but in parent coordinates for the new rects.
This makes the old and new rectangles to be consistently using parent-relative
coordinates, fixing some broken window bits copy with child windows.
Fixes 4e06b87633ec7e04822ad4f4854df7ae43f0d7e0
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6683
This prevents a "Failed to get xinerama fullscreen monitor indices." error
when minimizing a fullscreen window.
--
v3: winex11: Properly handle minimized windows in update_net_wm_fullscreen_monitors().
https://gitlab.winehq.org/wine/wine/-/merge_requests/6648
@alesliehughes Sorry for bothering, but could you please explain a motivation behind this and next similar patches/requests removing the `DECLSPEC_HIDDEN` attribute from functions?
I just can't understand why they exist.
And no Wine-related mailing list gave me an answer...
Thanks.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4332#note_85109
This prevents a "Failed to get xinerama fullscreen monitor indices." error
when minimizing a fullscreen window.
--
v2: winex11: Properly handle minimized windows in update_net_wm_fullscreen_monitors().
https://gitlab.winehq.org/wine/wine/-/merge_requests/6648
--
v2: winex11: Get rid of X11DRV_XDND_HasHDROP helper.
winex11: Use a custom IEnumFORMATETC interface implementation.
winex11: Clear the XDND data object on drop event.
winex11: Get rid of X11DRV_XDND_SendDropFiles helper.
winex11: Assume that PostMessageW WM_DROPFILES succeeds.
winex11: Only enter the CS to get a reference on the data object.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6682
For Gitlab to detect and report the failing tests directly on the MR front page. This has the disadvantage of making the test job output more silent, but the results are still available as artifacts (in JUnit XML format), which hopefully should be enough if we need to have a better look at it. The tests standard output is included in the reports too.
I believe it would also show some failure statistics that could help deciding on whether a test is regularly failing or not, but I wasn't able to really test that it does. In order to help it doing it, it also implements hashing of test sources to generate test IDs that are more stable than `source:line`, although it could be done later.
All the succeeding (and todo) tests are grouped together and reported as once, as they would otherwise be split into individual success lines in the Gitlab UI, which would make it unnecessary large. Only failures and skipped tests are reported as individual entries.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6672
The current implementation of the GetDriveTypeW/A function relies on native system calls (such as fstatfs() in Linux) to determine the actual type of the drive, disregarding any configuration set through the mounts manager (wincfg). This patch changes the priority, giving precedence to the mounts manager configuration, making the user responsible for mapping drives. System calls will only be used if the drive is not explicitly configured by the user. I acknowledge that this is a breaking change, but I believe it enforces the correct behavior for GetDriveType.
Resolves: https://forum.winehq.org/viewtopic.php?t=38909
--
v5: fix: support custom cdrom labels
https://gitlab.winehq.org/wine/wine/-/merge_requests/6553
In preparation for moving the PE side DND code to win32u/user32 and factoring it between drivers.
--
v2: winex11: Allocate the XDND data object dynamically.
winex11: Use IDataObject to get CF_HDROP format for WM_DROPFILES.
winex11: Cleanup variable names in X11DRV_XDND_SendDropFiles.
winex11: Use the IDataObject interface to check for CF_HDROP format.
winex11: Cleanup XDND IDataObject methods and variables.
winex11: Move the XDND IDataObject implementation around.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6671
Setting NoDesktop to a nonzero value hides all desktop icons on Windows.
(It also disables the context menu on the desktop, but since Wine
doesn't have one, that doesn't matter.) Supporting the same option on
Wine would be useful in controlled environments that have a virtual
desktop but the user is not supposed to interact with it.
Strangely, although HKCU overrides HKLM for NoTrayItemsDisplay on
Windows, the reverse is true of NoDesktop.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6667
Cars: Mater National Championship expects that when two identical
controllers are connected and then the first controller is unplugged and
plugged back in, it gets the same device index that it had before. If it
gets a different index, the controller does not work until the game is
restarted.
As it stands without this patch, when the last device in the list is
unplugged, its index becomes available for reuse, but if the last device
is never unplugged, none of the indexes of the other devices formerly in
the list can be reused. It doesn't make sense to make all index reuse
depend on the last device. Instead, let's keep the device list sorted by
index and reuse any free index immediately.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6665
musl itself expects to be configured to compile with either
-ffloat-store or -fexcess-precision=standard - but when imported
into Wine, those flags aren't used.
This seems to be essential for getting reasonable precision
from some math functions such as exp2() - without the expected
precision truncation, the output value of exp2() can be off by
as much as 0.2% in some cases.
As Wine doesn't build the musl sources with those flags, use
volatile to force storing/reloading floats in order to limit
their intermediate precision, as musl expects. Only do this on
i386 where this is known be required.
This fixes https://bugs.winehq.org/show_bug.cgi?id=56372.
Apparently this issue only appears when compiled with GCC; with
Clang, this already works as expected.
Signed-off-by: Martin Storsjö <martin(a)martin.st>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5276
I'm not sure if it's the best way of fixing the bug. I was trying to set compilation options to workaround the problem but it didn't work well (probably due to my limited knowledge in this area).
The patch was originally sent in !5276.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6668
This is my last set of patches changing DDS pixel format handling.
--
v2: d3dx9: Add support for more DDS pixel formats.
d3dx9: Rework conversion to/from D3DFORMAT from/to DDS pixel format.
d3dx9: Validate the size of DDS files containing packed pixel formats.
d3dx9/tests: Add file size validation tests for DDS files containing packed pixel formats.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6653
Making all the windows handled by the driver to be either GL/VK client surfaces, or top-level windows. This avoids leaking host windows into the Win32 space, and makes it possible to get rid of some remaining NtUserMapWindowPoints in `map_event_coords` for mouse input.
--
v7: winex11: Get rid of the now unnecessary foreign windows.
winex11: Generate relative ConfigureNotify on parent ConfigureNotify events.
winex11: Use the new host windows to register foreign window events.
winex11: Keep track of the host windows children window rects.
winex11: Keep track of the host windows relative rects.
winex11: Keep track of the host window children of interest.
winex11: Create host windows recursively up to root_window.
winex11: Introduce a new struct host_window for host-only windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6649
This MR is the first of multiples MRs adding support for the Bluetooth stack API in Wine:
1. The winebth.sys driver, which talks to BlueZ and implements several key IOCTLs for communicating with Bluetooth devices and radios.
2. A bthserv service, which is responsible for keeping track of the authentication agent, and relaying authentication requests and responses to and from the driver.
3. Userspace APIs (bluetoothapis.dll, bthprops.cpl, Windows.Devices.Bluetooth, etc).
winebth.sys is split into two "sub" drivers:
`winebth.sys`: The main entrypoint, loaded by winedevice. It listens for changes to Bluetooth devices and radios and authentication events on BlueZ, passing them on the bthenum. It also handles most IOCTL operations on Bluetooth radio PDOs.
`bthenum`: Responsible for creating nodes for discovered Bluetooth devices and associated services. It also tries to validate any IOCTLs relating to bluetooth devices before passing them to winebth.sys. (Not in this MR, likely in part 2)
The unix code is split between dbus.c, unixlib.c and winebluetooth.c, where winebluetooth is a simple wrapper around unixlib for the sake of organization.
--
v12: dlls/winebth.sys: Update radio PDO properties on receiving PropertiesChanged for an org.bluez.Adapter1 object.
dlls/winebth.sys: Remove the corresponding radio PDO on receiving InterfacesRemoved for a org.bluez.Adapter1 object.
dlls/winebth.sys: Create new radio PDOs on receiving InterfacesAdded for objects that implement org.bluez.Adapter1.
dlls/winebth.sys: Set radio PDO properties from the device's corresponding org.bluez.Adapter1 object properties.
dlls/winebth.sys: Register and enable BTHPORT_DEVICE and BLUETOOTH_RADIO interfaces for radio PDOs.
dlls/winebth.sys: Derive a unique hardware ID for radio PDOs from their corresponding BlueZ object path.
dlls/winebth.sys: Create radio PDOs from the list of org.bluez.Adapter1 objects on BlueZ.
dlls/winebth.sys: Add a basic unixlib stub using DBus.
dlls/winebth.sys: Add base winebth.sys driver.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6621
This MR is the first of multiples MRs adding support for the Bluetooth stack API in Wine:
1. The winebth.sys driver, which talks to BlueZ and implements several key IOCTLs for communicating with Bluetooth devices and radios.
2. A bthserv service, which is responsible for keeping track of the authentication agent, and relaying authentication requests and responses to and from the driver.
3. Userspace APIs (bluetoothapis.dll, bthprops.cpl, Windows.Devices.Bluetooth, etc).
winebth.sys is split into two "sub" drivers:
`winebth.sys`: The main entrypoint, loaded by winedevice. It listens for changes to Bluetooth devices and radios and authentication events on BlueZ, passing them on the bthenum. It also handles most IOCTL operations on Bluetooth radio PDOs.
`bthenum`: Responsible for creating nodes for discovered Bluetooth devices and associated services. It also tries to validate any IOCTLs relating to bluetooth devices before passing them to winebth.sys. (Not in this MR, likely in part 2)
The unix code is split between dbus.c, unixlib.c and winebluetooth.c, where winebluetooth is a simple wrapper around unixlib for the sake of organization.
--
v13: dlls/winebth.sys: Update radio PDO properties on receiving PropertiesChanged for an org.bluez.Adapter1 object.
dlls/winebth.sys: Remove the corresponding radio PDO on receiving InterfacesRemoved for a org.bluez.Adapter1 object.
dlls/winebth.sys: Create new radio PDOs on receiving InterfacesAdded for objects that implement org.bluez.Adapter1.
dlls/winebth.sys: Set radio PDO properties from the device's corresponding org.bluez.Adapter1 object properties.
dlls/winebth.sys: Register and enable BTHPORT_DEVICE and BLUETOOTH_RADIO interfaces for radio PDOs.
dlls/winebth.sys: Derive a unique hardware ID for radio PDOs from their corresponding BlueZ object path.
dlls/winebth.sys: Create radio PDOs from the list of org.bluez.Adapter1 objects on BlueZ.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6621
This MR is the first of at least three MRs adding support for the Bluetooth stack API in Wine:
1. The winebth.sys driver, which talks to BlueZ and implements several key IOCTLs for communicating with Bluetooth devices and radios.
2. A bthserv service, which is responsible for keeping track of the authentication agent, and relaying authentication requests and responses to and from the driver.
3. Userspace APIs (bluetoothapis.dll, bthprops.cpl, Windows.Devices.Bluetooth, etc).
winebth.sys is split into two "sub" drivers:
`winebth.sys`: The main entrypoint, loaded by winedevice. It listens for changes to Bluetooth devices and radios and authentication events on BlueZ, passing them on the bthenum. It also handles most IOCTL operations on Bluetooth radio PDOs.
`bthenum`: Responsible for creating nodes for discovered Bluetooth devices and associated services. It also tries to validate any IOCTLs relating to bluetooth devices before passing them to winebth.sys.
The unix code is split between dbus.c, unixlib.c and winebluetooth.c, where winebluetooth is a simple wrapper around unixlib for the sake of organization.
--
v11: dlls/winebth.sys: Implement IOCTL_WINEBTH_DEVICE_START_PAIR.
dlls/winebth.sys: Implement IOCTL command IOCTL_BTH_DISCONNECT_DEVICE.
dlls/winebth.sys: Add support for RequestAuthorization requests from BlueZ.
dlls/winebth.sys: Add support for RequestPasskey requests from BlueZ.
dlls/winebth.sys: Add support for DisplayPasskey requests from BlueZ.
dlls/winebth.sys: Add support for AuthorizeService requests from BlueZ.
dlls/winebth.sys: Add support for DisplayPinCode requests from BlueZ.
dlls/winebth.sys: Add support for RequestPinCode requests from BlueZ.
dlls/winebth.sys: Add support for RequestConfirmation requests from BlueZ.
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/6621
On Thu Mar 21 07:01:57 2024 +0000, Vijay Kiran Kamuju wrote:
> I will initially only add the ID3X11ThreadPump interface stubs and the
> D3DX11CreateThreadPump function, so that once the common code steps are
> further advanced, we can fill in the interface functions.
Have not seen the unification work, except for the pixel format changes. Is there more work done in proton tree?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5357#note_84832
Making all the windows handled by the driver to be either GL/VK client surfaces, or top-level windows. This avoids leaking host windows into the Win32 space, and makes it possible to get rid of some remaining NtUserMapWindowPoints in `map_event_coords` for mouse input.
--
v6: winex11: Get rid of the now unnecessary foreign windows.
winex11: Generate relative ConfigureNotify on parent ConfigureNotify events.
winex11: Use the new host windows to register foreign window events.
winex11: Keep track of the host windows children window rects.
winex11: Keep track of the host windows relative rects.
winex11: Keep track of the host window children of interest.
winex11: Create host windows recursively up to root_window.
winex11: Introduce a new struct host_window for host-only windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6649
Create occitan translation
- add documentation/README-oc.md
- add po/oc.po
- update po/Makefile.in adding line ' oc.po \'
--
v2: Update README-oc.md
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/6651
Making all the windows handled by the driver to be either GL/VK client surfaces, or top-level windows. This avoids leaking host windows into the Win32 space, and makes it possible to get rid of some remaining NtUserMapWindowPoints in `map_event_coords` for mouse input.
--
v5: winex11: Get rid of the now unnecessary foreign windows.
winex11: Generate relative ConfigureNotify on parent ConfigureNotify events.
winex11: Use the new host windows to register foreign window events.
winex11: Keep track of the host windows children window rects.
winex11: Keep track of the host windows relative rects.
winex11: Keep track of the host window children of interest.
winex11: Create host windows recursively up to root_window.
winex11: Introduce a new struct host_window for host-only windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6649
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57293
Without this change, the tests segfault due to a buffer overflow.
Note: This bug was surfaced but not caused by b5cbb5562ca1aaf023a588bdc6ccb89220637fc4. Before b5cbb5562ca1aaf023a588bdc6ccb89220637fc4, the savedlg test segfaults while the opendlg test does not. After it, both segfault.
--
v2: comdlg32/tests: Add tests for itemdlg filters longer than MAX_PATH.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6657
Making all the windows handled by the driver to be either GL/VK client surfaces, or top-level windows. This avoids leaking host windows into the Win32 space, and makes it possible to get rid of some remaining NtUserMapWindowPoints in `map_event_coords` for mouse input.
--
v4: winex11: Get rid of the now unnecessary foreign windows.
winex11: Generate relative ConfigureNotify on parent ConfigureNotify events.
winex11: Use the new host windows to register foreign window events.
winex11: Keep track of the host windows children window rects.
winex11: Keep track of the host windows relative rects.
winex11: Keep track of the host window children of interest.
winex11: Create host windows recursively up to root_window.
winex11: Introduce a new struct host_window for host-only windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6649
Making all the windows handled by the driver to be either GL/VK client surfaces, or top-level windows. This avoids leaking host windows into the Win32 space, and makes it possible to get rid of some remaining NtUserMapWindowPoints in `map_event_coords` for mouse input.
--
v3: winex11: Get rid of the now unnecessary foreign windows.
winex11: Generate relative ConfigureNotify on parent ConfigureNotify events.
winex11: Use the new host windows to register foreign window events.
winex11: Keep track of the host windows children window rects.
winex11: Keep track of the host windows relative rects.
winex11: Keep track of the host window children of interest.
winex11: Create host windows recursively up to root_window.
winex11: Introduce a new struct host_window for host-only windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6649
Making all the windows handled by the driver to be either GL/VK client surfaces, or top-level windows. This avoids leaking host windows into the Win32 space, and makes it possible to get rid of some remaining NtUserMapWindowPoints in `map_event_coords` for mouse input.
--
v2: winex11: Get rid of the now unnecessary foreign windows.
winex11: Generate relative ConfigureNotify on parent ConfigureNotify events.
winex11: Use the new host windows to register foreign window events.
winex11: Keep track of the host windows children window rects.
winex11: Keep track of the host windows relative rects.
winex11: Keep track of the host window children of interest.
winex11: Create host windows recursively up to root_window.
winex11: Introduce a new struct host_window for host-only windows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6649
This is based on top of !6526, will mark ready after !6526 is merged.
--
v3: propsys: Support converting to BSTR for PropVariantToVariant.
propsys: Use debugstr_variant for the trace in VariantToPropVariant.
propsys: Implement PropVariantToBSTR.
propsys/tests: Test truncating for PropVariantToString.
propsys/tests: Test PropVariantToBSTR.
propsys: Add PropVariantToBSTR stub.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6640
The EnumAddressTypes tests wasn't actually calling the enum function.
The code within the test_EnumAddressTypes function appear to be
setup for calling EnumAddresses, so added a test for this scenario as well.
--
v2: dplayx/tests: Correct Enum tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6646