--
v2: d3dx10: Exclusively use shared code for parsing all files in get_image_info().
d3dx10: Add support for d3dx10+ image file formats in shared code.
d3dx10: Exclusively use shared code for parsing DDS files in get_image_info().
d3dx10: Add support for DXGI formats in d3dx_helpers.
d3dx10: Only validate header size for DDS files in d3dx10.
d3dx10: Add support for parsing DXT10 DDS headers to shared code.
d3dx10/tests: Add more DDS file header handling tests.
d3dx10/tests: Add more DDS file DXGI format mapping tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8705
It's not really a matter of DLL format or conversion, in both cases the module is run the same way from Wine perspective.
The difference is that when using yabridge, yabridge redirects the X11 window creation and takes the role of the window manager for Wine windows, embedding them inside its own windows that are in turn managed by the host WM. When running the modules directly, the host window manager does everything.
The problems probably come from yabridge behavior as a proxy window manager, how it manage Wine windows positions and and how it translates coordinates back and forth. This is what was improved in the yabridge wine10 branch, but it's still not completely right apparently.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6569#note_113863
C++/CX exposes `IPropertyValue` through `Platform::Details::CreateValue`, which returns a `Platform::Object` (which just seems to be a `IPropertyValue` object + C++ RTTI) containing the boxed value.
Apps don't seem to call `CreateValue` directly with a typecode. The code for boxing values gets generated when a value type gets assigned to a `Platform::Object` variable, as documented [here.](https://learn.microsoft.com/en-us/cpp/extensions/boxing-cpp-componen… The generated code will:
1. Call `__abi_make_type_id` with a `struct __abi_type_descriptor *` value, which is just a typecode + string pair. This returns a `Platform::Type` object.
2. Call `Platform::Type::GetTypeCode` on the returned `Platform::Type` object to get back the typecode.
3. Call `Platform::Details::CreateValue` with the typecode and a pointer to the actual value that needs to be boxed.
Apart from the usual WinRT methods, `Platform::Type` obejcts also impement the `IEquatable` and `IPrintable` interfaces. I don't know what their vtables look like, though.
The `Platform::Type` and `Platform::Object` classes also have associated RTTI (can be demonstrated by calling `__RTtypeid`), which we'll also need to emit at some point in the future.
--
v7: vccorlib140: Use the correct symbol name for InitControlBlock on i386 and arm.
vccorlib140: Implement Platform::Details::CreateValue.
vccorlib140: Add stub for Platform::Details::CreateValue.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8831
C++/CX exposes `IPropertyValue` through `Platform::Details::CreateValue`, which returns a `Platform::Object` (which just seems to be a `IPropertyValue` object + C++ RTTI) containing the boxed value.
Apps don't seem to call `CreateValue` directly with a typecode. The code for boxing values gets generated when a value type gets assigned to a `Platform::Object` variable, as documented [here.](https://learn.microsoft.com/en-us/cpp/extensions/boxing-cpp-componen… The generated code will:
1. Call `__abi_make_type_id` with a `struct __abi_type_descriptor *` value, which is just a typecode + string pair. This returns a `Platform::Type` object.
2. Call `Platform::Type::GetTypeCode` on the returned `Platform::Type` object to get back the typecode.
3. Call `Platform::Details::CreateValue` with the typecode and a pointer to the actual value that needs to be boxed.
Apart from the usual WinRT methods, `Platform::Type` obejcts also impement the `IEquatable` and `IPrintable` interfaces. I don't know what their vtables look like, though.
The `Platform::Type` and `Platform::Object` classes also have associated RTTI (can be demonstrated by calling `__RTtypeid`), which we'll also need to emit at some point in the future.
--
v5: vccorlib140: Use the correct symbol name for InitControlBlock on i386 and arm.
vccorlib140: Implement Platform::Details::CreateValue.
vccorlib140: Add stub for Platform::Details::CreateValue.
vccorlib140: Implement Platform::Type::{Equals, GetTypeCode, ToString, FullName::get}.
vccorlib140: Implement __abi_make_type_id.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8831
@rbernon do you know if winelib is expected to produce windowing bugs for .so files converted from DLL files vs running those DLL files through Wine runtime?
yabridge uses winelib to produce VST.so files.
Might winelib be missing components when exporting to .so files that otherwise exist for Wine runtime that fixes the bugs?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6569#note_113850
Coordinates from mouse low level hook messages are not mapped the same way than WM_MOUSEMOVE or GetCursorPos. This causes problems on programs that make use of both values to calculate mouse movement, like the wine DirectInput implementation.
I'm marking this as a draft since I was not able to find a way to write a test for this. I'm able to easily reproduce it on Proton, because it creates a scaled full screen window, on Wine this doesn't happen so the coordinates are not required to be mapped to a scaled window.
Edit: I didn't realize that modesetting emulation was an experimental option! So, I was able to reproduce the bug by enabling it.
--
v2: win32u: Map raw coordinates to virtual screen in low-level hooks.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8669
You should stop updating your MR every day. Not only is it a waste of CI resources, but it makes it look like it's not ready since it keeps being updated.
Also you don't need additional forks, you can create a MR from a different branch in the same fork.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8573#note_113830