Make both method calls;
1. Consistently written with parameter names as per spec.
2. Fix parameter validation to be consistent with spec.
3. Fix szNameBuf parameter semantics as per spec.
4. Fix szNameBuf casing str search as per spec.
5. Factor out common code into TLB_ helpers vastly improves readability.
--
v25: dlls/oleaut32: Replace infinite loops with for loops
dlls/oleaut32: Use consistent SegDir field names
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/7286
On Sun Feb 16 08:08:14 2025 +0000, Joe Souza wrote:
> Looking through the existing code, especially WCMD_directory, there
> seems to be no distinction between errorlevel and the RETURN_CODE that
> the function returns. In most cases I see the code set errorlevel to
> some value and then the function returns errorlevel.
OK, I *think* the latest changes are pretty close to what you asked for.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7322#note_94807
Allow the user to press Ctrl-C to abort lengthy DIR (or DIR /p, etc.) operations.
--
v9: programs/cmd: Implement ability to abort lengthy directory operations via Ctrl-C.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7322
On Sun Feb 16 01:21:13 2025 +0000, Brian Wright wrote:
> I updated the bug tracker again.
> In REAPER, the window tree looks a bit like this:
> ```text
> host_window_reparent parent 402, window 200192 (604,402)-(1516,1110)
> host_window_reparent parent 200192, window 200193 (0,0)-(912,708)
> root_coords 1
> host_window_reparent parent 200193, window 1600130 (0,0)-(912,708)
> root_coords 1
> host_window_reparent parent 1600130, window 16012db (0,0)-(644,659)
> root_coords 1
> host_window_reparent parent 16012db, window 2200000 (0,0)-(805,460)
> root_coords 1
> host_window_reparent parent 2200000, window 2000003 (0,0)-(1920,1200)
> root_coords 0
> ```
> I think 402, 200192, and 200193 are from REAPER and the rest from yabridge.
> One detail I noticed is that window 2000003 gets the initial click event
> from yabridge and sends the correct value to
> **cursor:map_event_coords**. I don't know the structure of
> event->window, but there is something in
> [**host_window_configure_child**](https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/winex11.drv/window.c#L229)
> that messes with coordinate offsets.
> Is is possible that **map_event_coords** should check the value of
> `root_coords` (aka `event->send_event`) and provide `(pt->x, pt->y)`
> when this is 0?
> I'll keep picking at things and see if there's more to find.
> -----
> Alternatively, a flag/argument solution would get DAW users back in action.
Bah. There were too many changes to X11DRV_ConfigureNotify for printf debugging, and I wouldn't know what to change that also keeps other programs from breaking.
I can provide detailed logs for 9.21 (or any interim versions), but that's about all I can do
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6569#note_94802
This MR tries to implement the SetIMECompositionRect user driver function and partially the WINE_IME_POST_UPDATE message call. It requires support for zwp_text_input_v3 from the compositor. It supports submitting committed text to the win32 side and notifying the compositor about the area of the text cursor rectangle.
This doesn't add support for embedded pre-edit because I couldn't immediately get it to appear. Either I did something incorrect, or it has something to do with Wayland. On X11, the pre-edit appears completely separated to the application window and doesn't move with it, which doesn't seem to be compatible with Wayland.
If Windows has the surrounding text feature, it does not seem possible to support it here with the provided interface.
The IME is always enabled on the focused surface, like on X11. If Windows has a facility that applications can use to say that it does or does not accept text entry at certain parts of the UI, it does not seem possible to support it here with the provided interface.
--
v10: winewayland: Post IME update for preedit text.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7241
I think it would be very nice to have something like that to reduce the burden of implementing COM interfaces. This shows for instance on the windows.gaming.input module a 30% LoC reduction (from ~6800 to ~4700), even though the module already had a boilerplate helper macros already.
The MR introduces macros to automatically implement each IUnknown method, as well as all of them at once. It also includes a helper to implement IInspectable methods at once, as well as macros to forward both interface methods to a base interface or an outer object. Last, it provides higher-level macros to implement a main interface and any number of sub interfaces and generate IUnknown, forwarding and vtables for all of them at once, with IInspectable support when needed.
It uses widl to generate additional per-interface macros, for things like inheritance and vtable generation. The rest of the macros are otherwise shared in a Wine-specific header.
The implementation is split to show individual macro being used, although they are later replaced by higher-level macros. The individual helpers are still useful in some corner cases where specific behavior needs to be implemented, or for aggregating classes.
--
v5: windows.gaming.input: Use the new COM macros everywhere possible.
windows.gaming.input: Use the new macros for class implementation.
widl: Generate new macros for class implementation.
windows.gaming.input: Use the new macros for IInspectable implementation.
widl: Generate new macros for IInspectable implementation.
windows.gaming.input: Use the new macros for IUnknown implementation.
widl: Generate new macros for IUnknown implementation.
windows.gaming.input: Use the WIDL_impl_IUnknown_QueryInterface boilerplate macros.
widl: Generate some WIDL_impl_IUnknown_QueryInterface boilerplate macros.
windows.gaming.input: Use the WIDL_impl_QueryInterface boilerplate macros.
widl: Generate some WIDL_impl_QueryInterface boilerplate macros.
windows.gaming.input: Use the WIDL_impl_IUnknown_Release boilerplate macros.
widl: Generate some WIDL_impl_IUnknown_Release boilerplate macros.
windows.gaming.input: Use the WIDL_impl_IUnknown_AddRef macros.
widl: Generate some WIDL_impl_IUnknown_AddRef boilerplate macros.
windows.gaming.input: Use the WIDL_impl_IInspectable_forwards boilerplate macros.
widl: Generate some WIDL_impl_IInspectable_forwards boilerplate macros.
windows.gaming.input: Use the WIDL_impl_IUnknown_forwards boilerplate macros.
widl: Generate some WIDL_impl_IUnknown_forwards boilerplate macros.
windows.gaming.input: Use the new WIDL_impl_from_* boilerplate macros.
widl: Generate some WIDL_impl_from_* boilerplate macros.
windows.gaming.input: Use the new WIDL_impl_*Vtbl macros.
widl: Generate WIDL_impl_*Vtbl boilerplate macros.
windows.gaming.input: Use type-prefixed impl_from helpers.
windows.gaming.input: Move struct qualifier inside the macro.
windows.gaming.input: Use a separate interface for IAgileObject.
makedep: Generate some new impl.h headers from the IDLs.
widl: Generate some new impl.h headers from the IDLs.
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/6207
Allow the user to press Ctrl-C to abort lengthy DIR (or DIR /p, etc.) operations.
--
v7: programs/cmd: Implement ability to abort lengthy directory operations via Ctrl-C.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7322
The Windows Bluetooth stack uses private IOCTLs in order to set the [discoverability](https://learn.microsoft.com/en-us/windows/win32/api/blueto… and [connectability](https://learn.microsoft.com/en-us/windows/win32/api/bluetoo… status of a local radio, and to start/stop the device inquiry procedure. This MR introduces 3 wine-specific IOCTL codes for the same purposes, as most applications seem to the Win32 API itself for these operations:
* IOCTL_WINBTH_RADIO_SET_FLAG
* IOCTL_WINEBTH_RADIO_START_DISCOVERY
* IOCTL_WINEBTH_RADIO_STOP_DISCOVERY
--
v12: bluetoothapis: Implement BluetoothEnableDiscovery.
bluetoothapis/tests: Add tests for BluetoothEnableDiscovery.
bluetoothapis: Add stub for BluetoothEnableDiscovery.
bluetoothapis: Implement BluetoothEnableIncomingConnections.
bluetoothapis/tests: Add tests for BluetoothEnableIncomingConnections.
bluetoothapis: Add stub for BluetoothEnableIncomingConnections.
winebth.sys: Call bluez_watcher_close as part of bluetooth_shutdown.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7216
The current YUV to RGB conversion provides values in studio-range [16-235], but full-range is required [0-255]. As a result, we currently write the value of 16 to represent black, and so we get gray instead.
This MR changes the coefficients used in the conversion so that the resultant output is in full-range. It actually uses two sets of coefficients as these differ between SD and HD.
Also included is a number of Direct Draw 7 tests.
The coefficients used are documented here:
https://learn.microsoft.com/en-us/windows/win32/medfound/recommended-8-bit-…
--
v2: wined3d: Use Microsoft provided coefficients for YUV to RGB conversion.
ddraw/tests: Test yuv to rgb blt in ddraw7.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7324
This MR tries to implement the SetIMECompositionRect user driver function and partially the WINE_IME_POST_UPDATE message call. It requires support for zwp_text_input_v3 from the compositor. It supports submitting committed text to the win32 side and notifying the compositor about the area of the text cursor rectangle.
This doesn't add support for embedded pre-edit because I couldn't immediately get it to appear. Either I did something incorrect, or it has something to do with Wayland. On X11, the pre-edit appears completely separated to the application window and doesn't move with it, which doesn't seem to be compatible with Wayland.
If Windows has the surrounding text feature, it does not seem possible to support it here with the provided interface.
The IME is always enabled on the focused surface, like on X11. If Windows has a facility that applications can use to say that it does or does not accept text entry at certain parts of the UI, it does not seem possible to support it here with the provided interface.
--
v9: winewayland: Post IME update for preedit text.
winewayland: Implement SetIMECompositionRect.
winewayland: Post IME update for committed text.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7241
This MR tries to implement the SetIMECompositionRect user driver function and partially the WINE_IME_POST_UPDATE message call. It requires support for zwp_text_input_v3 from the compositor. It supports submitting committed text to the win32 side and notifying the compositor about the area of the text cursor rectangle.
This doesn't add support for embedded pre-edit because I couldn't immediately get it to appear. Either I did something incorrect, or it has something to do with Wayland. On X11, the pre-edit appears completely separated to the application window and doesn't move with it, which doesn't seem to be compatible with Wayland.
If Windows has the surrounding text feature, it does not seem possible to support it here with the provided interface.
The IME is always enabled on the focused surface, like on X11. If Windows has a facility that applications can use to say that it does or does not accept text entry at certain parts of the UI, it does not seem possible to support it here with the provided interface.
--
v8: winewayland: Post IME update for preedit text.
winewayland: Implement SetIMECompositionRect.
winewayland: Post IME update for committed text.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7241
Sorry for the late review, I don't have any good excuse.
In general, these ioctls are a bit odd without the code on the bluetoothapis side to hook them up. It's probably reasonable to add those to this merge request.
From 1/4:
```
+NTSTATUS winebluetooth_radio_set_property( winebluetooth_radio_t radio,
+ winebluetooth_radio_props_mask_t prop,
+ union winebluetooth_property *property )
```
The "property" parameter is not used.
```
+ switch (prop)
+ {
+ case WINEBLUETOOTH_RADIO_PROPERTY_CONNECTABLE:
+ case WINEBLUETOOTH_RADIO_PROPERTY_DISCOVERABLE:
+ case WINEBLUETOOTH_RADIO_PROPERTY_PAIRABLE:
+ break;
+ default:
+ return STATUS_INVALID_PARAMETER;
+ }
```
The Unix side returns STATUS_INVALID_PARAMETER for the others anyway, so you might as well just get rid of this whole switch.
```
+ case LOCAL_RADIO_CONNECTABLE:
+ status =
+ winebluetooth_radio_set_property( ext->radio, WINEBLUETOOTH_RADIO_PROPERTY_CONNECTABLE, &prop_value );
+
+ break;
+ case LOCAL_RADIO_DISCOVERABLE:
+ status =
+ winebluetooth_radio_set_property( ext->radio, WINEBLUETOOTH_RADIO_PROPERTY_DISCOVERABLE, &prop_value );
+ break;
```
Why are we translating to a different flags enum? Why not pass this flag enum directly?
You also implement the PAIRABLE property, but that code is never reached.
```
+ status = UNIX_BLUETOOTH_CALL( bluetooth_adapter_set_prop, ¶ms );
+
+ if (status != STATUS_SUCCESS) return status;
+
+ return STATUS_SUCCESS;
```
This could just be "return UNIX_BLUETOOTH_CALL( ... )".
To each their own style, I guess, but in general there are a lot of helpers that seem quite redundant...
From 2/4:
```
+ if (filter->le && filter->bredr)
+ transport = WINEBLUETOOTH_DISCOVERY_TRANSPORT_AUTO;
+ else if (filter->le)
+ transport = WINEBLUETOOTH_DISCOVERY_TRANSPORT_LE;
+ else if (filter->bredr)
+ transport = WINEBLUETOOTH_DISCOVERY_TRANSPORT_BR_EDR;
+ else
+ transport = WINEBLUETOOTH_DISCOVERY_TRANSPORT_DEFAULT;
```
Why convert to an intermediate set of flags instead of just passing the params directly to the Unix side?
Aside from the fact that the bitfield might not work, but it's pretty unnecessary anyway.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7216#note_94694
64-bit volatile accesses are not atomic on i386. Both
i686-w64-mingw32-gcc and x86 MSVC splits 64-bit loads into a pair of
load/store ops.
Fix this by using a FILD/FISTP pair, which is also used to implement C11
atomics by i686-w64-mingw32-gcc.
Fixes: f82b1c1fcf770a5d6fa02c3f286282be79a201b8
--
v5: include: Prevent misuse of __WINE_ATOMIC_* helper macros for non-atomic large accesses.
server: Fix incorrect usage of __WINE_ATOMIC_STORE_RELEASE in SHARED_WRITE_BEGIN/SHARED_WRITE_END.
include: Fix ReadNoFence64 on i386.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7237
--
v5: server: Check for zero access in alloc_handle().
shell32: Don't open reg keys with zero access mask.
wbemprox: Don't open reg keys with zero access mask.
quartz: Don't open reg keys with zero access mask.
devenum: Don't open reg keys with zero access mask.
setupapi: Don't open reg keys with zero access mask.
kernel32: Don't open reg keys with zero access mask.
httpapi: Don't open files with zero access.
ntoskrnl.exe/tests: Open directory object with nonzero access in test_permanent().
https://gitlab.winehq.org/wine/wine/-/merge_requests/6047