The intention is to have ICreateTypeLib2_fnDeleteTypeInfo() fully implemented such that Cashbooks can run on Linux. I believe this should fix a number of other Windows apps that lean heavily on oleaut32.dll as well.
--
v10: dlls/oleaut32: ITypeComp::BindType() should dispatch ITypeLibComp::BindType()
dlls/oleaut32: Invert if stmt in ITypeInfoImpl_Constructor()
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/7203
The intention is to have ICreateTypeLib2_fnDeleteTypeInfo() fully implemented such that Cashbooks can run on Linux. I believe this should fix a number of other Windows apps that lean heavily on oleaut32.dll as well.
--
v9: dlls/oleaut32: Validate args of ITypeLib2_fnIsName()
dlls/oleaut32: Consistently use TLB_get_bstr()
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/7203
Thanks for the submission.
I'm not thrilled by the outcome style-wise, but given the starting point, I fully agree with you that it'll way too large to go further.
Two remarks though:
The commit message should read: "programs/cmd: Cleanup DIR /O logic."
(without the quotes) we want to trace which module is addressed by the change, and commit line should be terminated by a '.'
Content-wise, we definitively need to embed the tests (as the ones I posted above) inside the merge request in order to detect potential further regressions. This means the MR shall contain two patches:
* first patch in MR: the tests (marked with @todo_wine@ for the failing ones),
* the second patch in MR: basically your current patch + removal of @todo_wine@ that now pass.
Either you feel up to do it (feel free to use the patch of tests above); if not, I can repackage your patch into the desired form.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7131#note_93325
This PR updates the behaviour of `NtQueryDirectoryFile`, bringing it in line with current Windows behaviour. The need for this update was discovered when attempting to build the Unreal Engine with MSVC under Wine. In certain cases conditional include statements do not behave as expected, due to MSVC depending on undocumented behaviour of `NtQueryDirectoryFile`.
We ran tests on multiple versions of Windows, and discovered that the behaviour has changed since the original Wine implementation, but the documentation has not. The source code for our test tool, and a set of results can be found [here](https://github.com/TensorWorks/NtQueryDirectoryFile-Test). As of Windows 8, calling `NtQueryDirectoryFile` with a re-used handle, a new mask, and setting the `RestartScan` flag to True, causes the cached results to be erased and a new scan to be performed with the updated mask. Currently, Wine performs as did earlier versions of Windows, where the changed mask is ignored, and the cache is reused. This can cause `NtQueryDirectoryFile` under Wine to falsely report that files exist, when they do not.
This PR corrects this behaviour, invalidating the cache when required. Implementing this exposed further undocumented behaviour of `NtQueryDirectoryFile`, where a search for a non-existent file will return either `STATUS_NO_MORE_FILES` or `STATUS_NO_SUCH_FILE`, depending on whether or not the handle had been previously used regardless of the value of `RestartScan`. This was reflected in a `winetest` which allowed for the response to be either `STATUS_SUCCESS` or `STATUS_NO_MORE_FILES`.
This patch also adds unit tests for the new behaviour of `NtQueryDirectoryFile`. These tests pass when running `winetest` under Windows, and under Wine with these changes in place, but they will fail under older versions of Wine. If run under older versions of Windows the test suite will detect that this functionality is not supported, and will not run the updated tests.
--
v10: ntdll.dll: Update NtQueryDirectoryFile to align with current Windows behaviour
ntdll: Test updated NtQueryDirectoryFile mask reset behaviour
https://gitlab.winehq.org/wine/wine/-/merge_requests/6904
The intention is to have ICreateTypeLib2_fnDeleteTypeInfo() fully implemented such that Cashbooks can run on Linux. I believe this should fix a number of other Windows apps that lean heavily on oleaut32.dll as well.
--
v8: dlls/oleaut32: Validate args of ITypeLibComp_fnBind()
dlls/oleaut32: Fix wFlags check in ITypeLibComp_fnBind()
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/7203
The intention is to have ICreateTypeLib2_fnDeleteTypeInfo() fully implemented such that Cashbooks can run on Linux. I believe this should fix a number of other Windows apps that lean heavily on oleaut32.dll as well.
--
v7: dlls/oleaut32: Shink down ITypeLibComp_fnBind() verbosity some
dlls/oleaut32: Use consistent param identifers in ITypeComp
dlls/oleaut32: Validate arguments correctly in ITypeComp interface
dlls/oleaut32: fn(Is|Find)Name should set szNameBuf with correct case
dlls/oleaut32: Use array indexing in ITypeLib2_Constructor_SLTG()
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/7203
I don't think these are serious problems, but Clang 21's defaults (from llvm-mingw nightly) were resulting in build failures with `--enable-werror` due to `-Wtautological-compare` and `-Wunused-function`. I hope that the buffer wrap checking is somewhat idiomatic/standard.
If necessary, I can split off the winevulkan change, but it seems minor enough to be grouped in this MR.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7231
The intention is to have ICreateTypeLib2_fnDeleteTypeInfo() fully implemented such that Cashbooks can run on Linux. I believe this should fix a number of other Windows apps that lean heavily on oleaut32.dll as well.
--
v6: dlls/oleaut32: Use consistent param identifers in ITypeComp
dlls/oleaut32: Validate arguments correctly in ITypeComp interface
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/7203
The intention is to have ICreateTypeLib2_fnDeleteTypeInfo() fully implemented such that Cashbooks can run on Linux. I believe this should fix a number of other Windows apps that lean heavily on oleaut32.dll as well.
--
v5: dlls/oleaut32: fn(Is|Find)Name should set szNameBuf with correct case
dlls/oleaut32: Use array indexing in ITypeLib2_Constructor_SLTG()
dlls/oleaut32: Use consistent param identifiers in fnFindName
https://gitlab.winehq.org/wine/wine/-/merge_requests/7203
On Thu Jan 16 14:02:03 2025 +0000, Patrick Laimbock wrote:
> > I don't want to break something else this late.
> That makes total sense :smiley:
> I'm happy to test anything so feel free to ping me.
Hi Rémi and co, is there any movement on this? (an open mr or the like) Now that wine 10 is done could we consider getting this fix in?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6569#note_93309
The intention is to have ICreateTypeLib2_fnDeleteTypeInfo() fully implemented such that Cashbooks can run on Linux. I believe this should fix a number of other Windows apps that lean heavily on oleaut32.dll as well.
--
v4: dlls/oleaut32: Mostly mirror fnFindName impl in typelib.c
dlls/oleaut32: Use common and correct identifiers in typelib.c
https://gitlab.winehq.org/wine/wine/-/merge_requests/7203
* * *
BTW I did try to create tests to make sure we connect collection the same way Windows does it. Problem is `GUID_ConnectToDLSCollection` is not gettable. Then I tried to create a `IDirectMusicPerformance` implementation and intercept `DownloadInstrument`. Interestingly Windows `IDirectMusicSegment::Download` doesn't call `DownloadInstrument` at all, instead it downloads instruments through a private, undocumented interface. So there seems to be no way to test this.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7230
Startup and lock counts in native Windows are separate, and the lock count does not decrease when an async result is freed if the platform has been started.
--
v3: rtworkq: Do not unlock the platform when async result objects are freed if the platform is started.
rtworkq: Introduce a platform startup count.
rtworkq/tests: Test work queue.
mfplat/tests: Test platform startup and lock counts.
mfplat/tests: Test mixing of MF platform functions with their Rtwq equivalents.
mfplat/tests: Introduce a helper to check the platform lock count.
mfplat/tests: Release callback2 in test_event_queue().
https://gitlab.winehq.org/wine/wine/-/merge_requests/7174
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
--
v6: winebth.sys: Call bluez_watcher_close as part of bluetooth_shutdown.
winebth.sys: Implement IOCTL_WINEBTH_RADIO_STOP_DISCOVERY.
winebth.sys: Implement IOCTL_WINEBTH_RADIO_START_DISCOVERY.
winebth.sys: Implement IOCTL_WINEBTH_RADIO_SET_FLAG.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7216
The intention is to have ICreateTypeLib2_fnDeleteTypeInfo() fully implemented such that Cashbooks can run on Linux. I believe this should fix a number of other Windows apps that lean heavily on oleaut32.dll as well.
--
v3: dlls/oleaut32: Implement SetHelpStringContext()
dlls/oleaut32: Add DeleteTypeInfo() base-cases in typelib.c
dlls/oleaut32: Allow TLB_get_typeinfo_by_name() to also return the index
dlls/oleaut32: Disambiguate pIndex in typelib.c
dlls/oleaut32: Avoid possible infinite loops and invalid mem access
dlls/oleaut32: Simplify SLTG_DoRefs() readability
dlls/oleaut32: Consistently use TLB_REF_NOT_FOUND
dlls/oleaut32: Consistently use lstrcmpiW() while looking for names
dlls/oleaut32: Simplify loop in ITypeLib2_Constructor_MSFT()
https://gitlab.winehq.org/wine/wine/-/merge_requests/7203
In cases where MF is already shut down, simply forwarding MFShutdown() to
RtwqShutdown() will corrupt the Rtwq lock count if async result objects
still exist, because they hold a lock. JR East Train Simulator does this.
--
v2: mf: Release the sample if stream sink processing fails.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7174
This PR updates the behaviour of `NtQueryDirectoryFile`, bringing it in line with current Windows behaviour. The need for this update was discovered when attempting to build the Unreal Engine with MSVC under Wine. In certain cases conditional include statements do not behave as expected, due to MSVC depending on undocumented behaviour of `NtQueryDirectoryFile`.
We ran tests on multiple versions of Windows, and discovered that the behaviour has changed since the original Wine implementation, but the documentation has not. The source code for our test tool, and a set of results can be found [here](https://github.com/TensorWorks/NtQueryDirectoryFile-Test). As of Windows 8, calling `NtQueryDirectoryFile` with a re-used handle, a new mask, and setting the `RestartScan` flag to True, causes the cached results to be erased and a new scan to be performed with the updated mask. Currently, Wine performs as did earlier versions of Windows, where the changed mask is ignored, and the cache is reused. This can cause `NtQueryDirectoryFile` under Wine to falsely report that files exist, when they do not.
This PR corrects this behaviour, invalidating the cache when required. Implementing this exposed further undocumented behaviour of `NtQueryDirectoryFile`, where a search for a non-existent file will return either `STATUS_NO_MORE_FILES` or `STATUS_NO_SUCH_FILE`, depending on whether or not the handle had been previously used regardless of the value of `RestartScan`. This was reflected in a `winetest` which allowed for the response to be either `STATUS_SUCCESS` or `STATUS_NO_MORE_FILES`.
This patch also adds unit tests for the new behaviour of `NtQueryDirectoryFile`. These tests pass when running `winetest` under Windows, and under Wine with these changes in place, but they will fail under older versions of Wine. If run under older versions of Windows the test suite will detect that this functionality is not supported, and will not run the updated tests.
--
v9: ntdll.dll: Update NtQueryDirectoryFile to align with current Windows behaviour
ntdll: Test updated NtQueryDirectoryFile mask reset behaviour
https://gitlab.winehq.org/wine/wine/-/merge_requests/6904
This PR updates the behaviour of `NtQueryDirectoryFile`, bringing it in line with current Windows behaviour. The need for this update was discovered when attempting to build the Unreal Engine with MSVC under Wine. In certain cases conditional include statements do not behave as expected, due to MSVC depending on undocumented behaviour of `NtQueryDirectoryFile`.
We ran tests on multiple versions of Windows, and discovered that the behaviour has changed since the original Wine implementation, but the documentation has not. The source code for our test tool, and a set of results can be found [here](https://github.com/TensorWorks/NtQueryDirectoryFile-Test). As of Windows 8, calling `NtQueryDirectoryFile` with a re-used handle, a new mask, and setting the `RestartScan` flag to True, causes the cached results to be erased and a new scan to be performed with the updated mask. Currently, Wine performs as did earlier versions of Windows, where the changed mask is ignored, and the cache is reused. This can cause `NtQueryDirectoryFile` under Wine to falsely report that files exist, when they do not.
This PR corrects this behaviour, invalidating the cache when required. Implementing this exposed further undocumented behaviour of `NtQueryDirectoryFile`, where a search for a non-existent file will return either `STATUS_NO_MORE_FILES` or `STATUS_NO_SUCH_FILE`, depending on whether or not the handle had been previously used regardless of the value of `RestartScan`. This was reflected in a `winetest` which allowed for the response to be either `STATUS_SUCCESS` or `STATUS_NO_MORE_FILES`.
This patch also adds unit tests for the new behaviour of `NtQueryDirectoryFile`. These tests pass when running `winetest` under Windows, and under Wine with these changes in place, but they will fail under older versions of Wine. If run under older versions of Windows the test suite will detect that this functionality is not supported, and will not run the updated tests.
--
v8: ntdll: Update NtQueryDirectoryFile to purge cache if scan is reset with a new mask
ntdll: Test updated NtQueryDirectoryFile mask reset behaviour
https://gitlab.winehq.org/wine/wine/-/merge_requests/6904
OK, I just submitted an updated change. I spent a lot of time yesterday and today getting the logic right, testing various /O options, side by side with Windows. This looks right to me. I did abstain from cleaning up the use of the global variables. This change at least does not add any. Cleaning those up will be an exercise for (another person at) another time. Let me know what you think of the change.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7131#note_93212
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
--
v5: winebth.sys: Call bluez_watcher_close as part of bluetooth_shutdown.
winebth.sys: Implement IOCTL_WINEBTH_RADIO_STOP_DISCOVERY.
winebth.sys: Implement IOCTL_WINEBTH_RADIO_START_DISCOVERY.
winebth.sys: Implement IOCTL_WINEBTH_RADIO_SET_FLAG.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7216
@piotr The build-linux stage is still complaining about email, and I can't figure out why. I checked, and all my commits where done with the config set correctly.
I merged changes from wine/master, so, now, everything is up to date.
I'm wondering if I should close this MR and create a new one. Can you make an advice?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7109#note_93189
This MR intends to add the complex numbers related functions:
* cimag
* _FCbuild
* crealf
* cimagf
These functions are defined in dlls/msvcr120/math.c and mapped in dlls/msvcr120/msvcr120.spec and dlls/ucrbase/ucrbase.spec.
The related tests were added in dlls/mscr120/tests/msvcr120.c and result were checked.
--
v6: fixed msvcr120_app spec
Revert "fixed msvcr120_app spec" because of missing user info
winex11: Attach currently active Vulkan onscreen surface in vulkan_surface_update_offscreen().
win32u: Don't invalidate existing Vulkan surface when a new one is created for window.
win32u: Check for NULL hwnd before calling vulkan_surface_presented() driver callback.
win32u: Nullify surface hwnd when detaching Vulkan surface.
winex11: Allow Withdrawn requests to override Iconic <-> Normal transitions.
include: Add signbit declarations for c++.
dinput: Clamp FFB effect report value to the field range.
dinput/tests: Add more tests for force feedback.
win32u: Implement NtUserPostQuitMessage().
win32u: Implement NtUserMessageBeep().
win32u: Implement NtUserEnumClipboardFormats().
win32u: Implement NtUserCreateMenu() and NtUserCreatePopupMenu().
win32u: Implement NtUserGetThreadState().
win32u: Implement NtUserReleaseCapture().
win32u: Implement NtUserDestroyCaret().
hhctrl: Use wide character string literals.
cryptui: Use wide character string literals.
ntdll: Fix the return value of NtDelayExecution.
ntdll/tests: Add tests for NtDelayExecution and Sleep(Ex).
sapi: Remove some unnecessary traces.
sapi: Implement IStream methods for SpStream.
sapi: Implement ISpStream::GetFormat.
sapi: Implement ISpStream::Close.
sapi: Implement ISpStream::Set/GetBaseStream.
sapi: Adding missing interfaces for SpStream.
include: Use flexible array-member in some structure declarations.
include: Add a couple of definitions to mscvpdb.h.
include: Add some new definitions for dbghelp.h.
win32u: Use the first vertical alternates table regardless of script.
gdi32/tests: Add tests for script-independent vertical glyph lookup.
wineps: Use simple strings for glyph names.
wineps: Remove some unused AFM values.
wineps: Don't parse the glyph name or encoding when loading AFM files.
wineps: Don't store the glyph name or encoding for individual glyphs.
user32/tests: Add tests for WM_COPYDATA.
win32u: Allocate a separate user buffer when packing a large WM_COPYDATA message for user32.
wintypes: Stub of IRandomAccessStreamReferenceStatics interface.
wintypes: Stub of Windows.Storage.Streams.RandomAccessStreamReference runtimeclass.
wintypes: Return S_OK from data_writer_activation_factory_ActivateInstance().
wintypes: Stub of Windows.Storage.Streams.DataWriter runtimeclass.
wintypes: Reimplement Windows.Foundation.Metadata.{ApiInformation,PropertyValue} separately.
wintypes/tests: Add interface tests.
include: Don't import .idl when DO_NO_IMPORTS is defined.
shlwapi: Use wide character string literals.
winhlp32: Use wide character string literals.
tapi32: Use wide character string literals.
hhctrl: Fix spelling of "local" in OnTopicChange.
ntdll/tests: Add RtlRealSuccessor() tests.
ntdll: Implement RtlRealSuccessor().
ntdll/tests: Add RtlRealPredecessor() tests.
ntdll: Implement RtlRealPredecessor().
wine.inf: Pass command line arguments to msiexec.
wined3d: Add Nvidia RTX40xx series desktop models data.
wined3d: Add Nvidia RTX30xx series desktop models data.
prntvpt: Implement writing PageImageableSize capabilities.
prntvpt: Implement writing PageMediaSize capabilities.
wined3d/spirv: Implement alpha test.
wined3d: Feed alpha ref through a push constant buffer.
wined3d/glsl: Move legacy alpha test to shader_glsl_apply_draw_state().
wined3d/spirv: Implement flat shading.
wined3d: Use ps_compile_args in shader_spirv_compile_arguments.
wined3d: Bind the right push constant buffers when FFP is toggled.
ole32: Set property storage clsid on creation.
ole32: Fix IPropertyStorage::ReadMultiple return value when some properties are missing.
ole32: Add support for reading VT_R4 property.
secur32: Update max token size for Negotiate.
kerberos: Update sizes to match modern implementations.
propsys: Remove FIXME() from PropVariantChangeType().
kernel32/tests: Match the value in the debug message the test condition.
crypt32: Don't assert in Context_Release() on invalid refcount.
crypt32/tests: Add a test for deleting and adding certs during enumeration.
crypt32: Only remove cert from mem store list when deleting it.
crypt32: Release existing cert context in add_cert_to_store().
crypt32: Don't try to release zero-refcount context in MemStore_addContext().
crypt32: Factor out memstore_free_context() function.
crypt32: Release cert context in CertDeleteCertificateFromStore().
msvcp140: Fix field order in _Mtx_t.
msvcp140/tests: Add more tests for _Mtx_t.
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/7109
On Wed Jan 29 09:48:53 2025 +0000, Joe Souza wrote:
> After spending some time looking at the existing code, I find that it's
> not that far off from working properly. It correctly allows for
> multiple options to be specified on the command line, and correctly
> handles the exclusive options (i.e. of /N, /E, /S, /D, it correctly
> allows only one of these to take effect). What it gets wrong is that in
> Windows, the first of the exclusive options encountered takes
> precedence, where in current Wine code, it's the last exclusive option
> encountered that takes precedence. Current wine code also does not sort
> directory names for /G.
> All that in mind, the code does not need to be changed to allow multiple
> sort options to be passed to the qsort algorithm. We could clean up the
> use of global variables a bit, sort the directory names for /G, and fix
> the code such that /O by itself is implied /O:NE (which my prior
> proposed change did).
agreed
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7131#note_93185
Which is use after free since commit 278437b266ed97cebb8e1c14be6cfa2c4f440f07.
Thanks Bernhard Übelacker for spotting this (based on ASan validation).
For a general case I'd say we can have some tests intentionally doing use after free but it is not needed here.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7218
This PR updates the behaviour of `NtQueryDirectoryFile`, bringing it in line with current Windows behaviour. The need for this update was discovered when attempting to build the Unreal Engine with MSVC under Wine. In certain cases conditional include statements do not behave as expected, due to MSVC depending on undocumented behaviour of `NtQueryDirectoryFile`.
We ran tests on multiple versions of Windows, and discovered that the behaviour has changed since the original Wine implementation, but the documentation has not. The source code for our test tool, and a set of results can be found [here](https://github.com/TensorWorks/NtQueryDirectoryFile-Test). As of Windows 8, calling `NtQueryDirectoryFile` with a re-used handle, a new mask, and setting the `RestartScan` flag to True, causes the cached results to be erased and a new scan to be performed with the updated mask. Currently, Wine performs as did earlier versions of Windows, where the changed mask is ignored, and the cache is reused. This can cause `NtQueryDirectoryFile` under Wine to falsely report that files exist, when they do not.
This PR corrects this behaviour, invalidating the cache when required. Implementing this exposed further undocumented behaviour of `NtQueryDirectoryFile`, where a search for a non-existent file will return either `STATUS_NO_MORE_FILES` or `STATUS_NO_SUCH_FILE`, depending on whether or not the handle had been previously used regardless of the value of `RestartScan`. This was reflected in a `winetest` which allowed for the response to be either `STATUS_SUCCESS` or `STATUS_NO_MORE_FILES`.
This patch also adds unit tests for the new behaviour of `NtQueryDirectoryFile`. These tests pass when running `winetest` under Windows, and under Wine with these changes in place, but they will fail under older versions of Wine. If run under older versions of Windows the test suite will detect that this functionality is not supported, and will not run the updated tests.
--
v7: ntdll: Update NtQueryDirectoryFile to purge cache if scan is reset with a new mask
ntdll: Test updated NtQueryDirectoryFile mask reset behaviour
https://gitlab.winehq.org/wine/wine/-/merge_requests/6904
I know it's been a year, but I'm not sure where else would be best to ask this, so:
Are there plans to support XDG_DECORATION in WINE ~11, and will it prefer SSDs on the application-side?
Aside from that, for those who have to deal with the CSD titlebars, is there any desire to upgrade the CSDs from Windows Classic to Windows Basic CSDs? All the textures for Windows Basic exist in Windows XP msstyles, afterall, given Windows Basic derivatives from Windows XP's window manager afterall, and this solution would also ensure consistency with programs that use Windows Basic's textures such as Mozilla Firefox.
Upgrading the CSDs to Windows Basic, especially now they're exposed to users as a requirement in GNOME, would likely be the preferred way, for users of visual styles, to have the CSDs be improved, would still provide the opportunity for WINE to have its own custom window decorations due to the WINE Visual Style, and would also preserve the Windows Classic CSDs for users who opt out of Visual Styles entirely. If GNOME CSDs are desired later down the line, those could be supplied via the "Use GTK+ theme as Visual Style" experiment or new Wine Configuration option.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3909#note_93141
--
v2: winex11.drv: Attach currently active Vulkan onscreen surface in vulkan_surface_update_offscreen().
win32u: Don't invalidate existing Vulkan surface when a new one is created for window.
win32u: Check for NULL hwnd before calling vulkan_surface_presented() driver callback.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7219
After spending some time looking at the existing code, I find that it's not that far off from working properly. It correctly allows for multiple options to be specified on the command line, and correctly handles the exclusive options (i.e. of /N, /E, /S, /T, it correctly allows only one of these to take effect). What it gets wrong is that in Windows, the first of the exclusive options encountered takes precedence, where in current Wine code, it's the last exclusive option encountered that takes precedence. Current wine code also does not sort directory names for /G.
All that in mind, the code does not need to be changed to allow multiple sort options to be passed to the qsort algorithm. We could clean up the use of global variables a bit, and sort the directory names for /G.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7131#note_93086
> We don't do that for all devices and it's not clear to me what we would gain by doing so.
Well, it'd be significantly more correct. That often counts for a lot.
As far as I can think of, the only devices for which we don't use the PnP architecture, and instead perform this kind of hack, are the GPU devices. That's because they're kind of tied to the explorer process rather than being able to be enumerated from winedevice.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7213#note_93082
@piotr I shall admit I'm a bit confused by the fork way of working and the wine CI.
I previously made some rebase, but now, when I click on the rebase button, nothing happens.
I didn't want to bother you before the windows build pipelines were successful, but your offer is welcomed.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7109#note_93055
The patches needs to be rebased on top of current master. You will also need to merge the patches/reverts and get rid of the merges. I have requested access to your repository if you need help with that.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7109#note_93054
On Mon Jan 27 21:05:00 2025 +0000, Alexandre Julliard wrote:
> Actually _Cbuild has the same problem, but it's less obvious since it
> will break only on non-x86 platforms.
Hello. Thanks for the clarification!
=> Change of Cbuild then.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7109#note_93053