Follow Up of Merge request !693 by Jacek Caban. That pull request changed
properly the static control of user32, but didn't address the comctl32
static control.
Fix an issue of TES4:Oblivion Construction Set, reported by me in the
Wine Bug: https://bugs.winehq.org/show_bug.cgi?id=53581#c5
after the merge request fixed the reported CS crash.
Signed-off-by: Lorenzo Ferrillo [lorenzofersteam@live.it](mailto:lorenzofersteam@live.it)
--
v2: comctl32: Support passing bitmap and icon resource ID as a string when creating static control.
https://gitlab.winehq.org/wine/wine/-/merge_requests/775
Based on [a patch](https://www.winehq.org/mailman3/hyperkitty/list/wine-devel@winehq.or… by Jinoh Kang (@iamahuman) from February 2022.
I removed the need for the event object and implemented fast paths for Linux.
On Linux 4.14+ `membarrier(MEMBARRIER_CMD_GLOBAL_EXPEDITED, ...)` is used.
On x86 Linux <= 4.13 `madvise(..., MADV_DONTNEED)` is used, which sends IPIs to all cores causing them to do a memory barrier.
On non-x86 Linux 4.3-4.13 `membarrier(MEMBARRIER_CMD_SHARED, ...)` is used.
On non-x86 Linux <= 4.2 and on other platforms the fallback path using APCs is used.
--
v2: ntdll: Add thread_get_register_pointer_values-based fast path for NtFlushProcessWriteBuffers.
ntdll: Add sys_membarrier-based fast path to NtFlushProcessWriteBuffers.
ntdll: Add MADV_DONTNEED-based fast path for NtFlushProcessWriteBuffers.
ntdll: Make server_select a memory barrier.
ntdll: Implement NtFlushProcessWriteBuffers.
https://gitlab.winehq.org/wine/wine/-/merge_requests/741