Later, a similar inproc sync as the queue will be created for user APC alerts and sent on thread init as well, saving us the need to special case those in the get_inproc_sync request and in the cache.
--
v3: ntdll: Notify wineserver when waiting on inproc queue.
server: Create an inproc sync for message queue signaling.
win32u: Move server queue handle to ntuser_thread_info.
ntdll: Introduce a helper to wait on an server-side sync object.
ntdll: Check inproc sync signal rights in signal and wait.
server: Move signal access checks outside of the objects.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8875
Motivation is Ubisoft Connect, which calls IDWriteFontCollection::GetFontSet many times on the system font collection, and then GetMatchingFonts on those sets. Without a change like this, each set created by GetFontSet has a separate cache of `dwrite_fontset_entry`s, so the GetMatchingFonts calls rescan every font on the system (via dwritefontset_GetMatchingFonts -> fontset_entry_is_matching -> fontset_entry_get_property, which does not find cached properties and thus makes a new file stream).
Perhaps it makes sense to not have the `owns_entries` flag in all the dwrite_fontset initializers, and just set it as needed in IDWriteFontCollection::GetFontSet? (And perhaps to invert it to `unowned_entries` or something, so the calloc initialization sets the most common value?)
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8906