Zhiyi Zhang (@zhiyi) commented about dlls/uxtheme/tests/system.c:
> DestroyWindow(hwnd);
> }
>
> +static void test_ShouldSystemUseDarkMode(void)
I think these tests might be a bit too much. I like the initial version that uses RegGetValueA() and confirms the registry value is the opposite of the ShouldSystemUseDarkMode. With some checks for the last error code and I think that's enough. These newly added tests confirm caching for ShouldSystemUseDarkMode() and that's good. However, ShouldSystemUseDarkMode() still need to query the registry key so it's not that useful.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3959#note_47270
Zhiyi Zhang (@zhiyi) commented about dlls/uxtheme/system.c:
> +
> +/**********************************************************************
> + * ShouldSystemUseDarkMode (UXTHEME.138)
> + *
> + * RETURNS
> + * Whether or not the system/app should use dark mode.
> + */
> +BOOL WINAPI ShouldSystemUseDarkMode(void)
> +{
> + DWORD system_uses_light_theme_size = sizeof(DWORD);
> + /* Persists between calls, in windows it might look up some internal table. */
> + static DWORD system_uses_light_theme = TRUE;
> +
> + /* We don't necessarily care that this might fail because it doesn't affect
> + * system_uses_light_theme if it does.
> + */
While comments are nice to have, these are pretty obvious so I think you can ignore it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3959#note_47269
On FreeBSD, using `environ` in a shared library linked with `-Wl,-z,defs` causes an undefined reference error:
```
gcc -m64 -o dlls/msv1_0/msv1_0.so -shared -Wl,-Bsymbolic -Wl,-soname,msv1_0.so -Wl,-z,defs dlls/msv1_0/unixlib.o dlls/ntdll/ntdll.so
/usr/local/bin/ld: dlls/msv1_0/unixlib.o: in function `ntlm_fork':
/usr/home/pip/wine/build64/../dlls/msv1_0/unixlib.c:206: undefined reference to `environ'
collect2: error: ld returned 1 exit status
*** Error code 1
```
This is unfortunately a common issue on FreeBSD, see:
- https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263265
- https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265008
- https://reviews.freebsd.org/D30842
Reported by Gerald Pfeifer.
--
v3: configure: Don't use -Wl,-z,defs if causes link errors with 'environ'.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3984
On FreeBSD, using `environ` in a shared library linked with `-Wl,-z,defs` causes an undefined reference error:
```
gcc -m64 -o dlls/msv1_0/msv1_0.so -shared -Wl,-Bsymbolic -Wl,-soname,msv1_0.so -Wl,-z,defs dlls/msv1_0/unixlib.o dlls/ntdll/ntdll.so
/usr/local/bin/ld: dlls/msv1_0/unixlib.o: in function `ntlm_fork':
/usr/home/pip/wine/build64/../dlls/msv1_0/unixlib.c:206: undefined reference to `environ'
collect2: error: ld returned 1 exit status
*** Error code 1
```
This is unfortunately a common issue on FreeBSD, see:
- https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263265
- https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265008
- https://reviews.freebsd.org/D30842
Reported by Gerald Pfeifer.
--
v2: configure: Don't link with -Wl,-z,defs on FreeBSD.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3984
This avoids stalling the pipeline when upstream nodes have not given enough samples for processing. If there are multiple upstream nodes, request samples in a round-robin fashion.
This fixes an issue where the intro audio of the game Airborne Kingdom stops playing after a few seconds.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2684
--
v2: uiautomationcore/tests: Add another test for IProxyProviderWinEventHandler child HWND scope checking.
uiautomationcore: Add support for raising events passed to our IProxyProviderWinEventSink interface.
uiautomationcore: Pass WinEvent data to IProxyProviderWinEventHandler::RespondToWinEvent.
uiautomationcore: Add support for marking the root IAccessible as known on non-root IAccessibles upon proxy provider creation.
uiautomationcore: Add support for ignoring ProviderOptions_UseComThreading when creating an HUIANODE.
uiautomationcore: Create HUIANODE for WinEvents that should invoke IProxyProviderWinEventHandler::RespondToWinEvent.
uiautomationcore: Check if we should try to invoke IProxyProviderWinEventHandler::RespondToWinEvent for registered UIA events.
uiautomationcore: Introduce uia_event_for_each function for iterating through registered events.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3956
I wanted to use ._xy element access to make it shorter, but that attempt was crushed by the reality - such indexing apparently compiles but does not produce correct element access loads. I'm going to update once this is fixed.
--
v7: vkd3d-shader/hlsl: Add determinant() function.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/329
On Mon Sep 25 07:27:07 2023 +0000, Rémi Bernon wrote:
> Fwiw this is not always the location of the executable, especially if it
> is located in a subfolder of the package, but the package root folder
> path instead. Anyway, this should be good enough for now.
Yeah, you're right. Minecraft calls `IApplicationData::get_LocalFolder()`, which is supposed to return the packages directory when `IStorageItem::get_Path()` is called, i.e. `AppData\\Local\\Packages\\Microsoft.MinecraftUWP\\LocalState`.
The IApplicationData::get_ methods correspond to folders within the relative package folder.
There doesn't seem to be a simple way of retrieving these directories. Each package has a number as a suffix. What I'm doing right now is loading the appxmanifest.xml file, using the identity name, and traversing the packages directory to find the right package. This doesn't account for duplicate names, which is unlikely to happen, but a concern nonetheless.
Still, this seems best done using package APIs. Also, since Wine does not yet support installing packages, retrieving the directory this way won't work. Or rather, it doesn't create the package folder that IApplicationData::get_ points to, I don't know if simply adding in package folders would be enough for some applications to work.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3548#note_47174
Currently ShellExecuteA() doesn't work for opening very long (>1024 chars) URLs. Commit fbf9cf6ebadc7d50c8fb7a130851c3658607b343 ("shell32: Make sure wcmd has enough space to hold the string.") started fixing it, but that is not enough.
This MR fixes two other issues on the way and lets ShellExecuteA() actually started winebrowser (with default registry) with the URL correctly relayed.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3981
I wanted to use ._xy element access to make it shorter, but that attempt was crushed by the reality - such indexing apparently compiles but does not produce correct element access loads. I'm going to update once this is fixed.
--
v6: vkd3d-shader/hlsl: Add determinant() function.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/329
--
v3: msxml3/tests: Add tests of ValidateOnParse property.
msxml3: Add ValidateOnParse support for IXMLDOMDocument3_{get,set}Property().
msxml3: Store ValidateOnParse property in domdoc_properties instead.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3424
Fixes Starfield not being able to take photos in photo mode (due to failing to creating windowscodecs' image factory due to COM apartment being initialized). Turns out on Windows RoGetActivationFactory() initializes implicit MTA apartment when called from STA thread, and so after that called once COM is implicitly uninitialized for any (new) thread until COM is uninitialized in the thread which called RoGetActivationFactory (or that thread exited). This is not the case on Win8 (where the function was first introduced) but looks consistent after that.
--
v3: combase: Create implicit MTA in STA apartment in RoGetActivationFactory().
https://gitlab.winehq.org/wine/wine/-/merge_requests/3806
Final Fantasy VIII does this, more or less, and needs Init to succeed.
--
v2: dmime: Return DMUS_E_AUDIOPATH_INACTIVE when audio paths are not enabled.
dmime: Return DMUS_E_AUDIOPATHS_IN_USE when audio paths are in use.
dmime: Initialize performance in Init rather than InitAudio.
dmime: Set the port direct sound before activating it.
dmime/tests: Test performance Init with a created port.
dmime/tests: Move performance tests into dmime.c.
dmime/tests: Remove some duplicated tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3952
Manually disable some warnings that are currently emitted. Eventually
the warnings should be solved and -Werror should remain alone.
--
v4: demos: Do not trigger -Wmissing-prototypes for wmain().
vkd3d: Use CONST_VTABLE.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/377