Convert surface lock to recursive mutex to allow same thread
to acquire the lock multiple times, preventing deadlocks when
lock_surface() and window_surface_lock() are called nestedly.
Signed-off-by: Zhao Yi <zhaoyi(a)uniontech.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9349
We used to do this when drawing the image. But our tests show that for v6,
the image bitmaps have been alpha pre-multiplied before drawing.
So we should do this when adding images.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9348
Within the NtUserUpdateLayeredWindow function, there exists the following call sequence:
window_surface_lock()->NtGdiAlphaBlend()->window_surface_unlock(). However, the implementation
of the NtGdiAlphaBlend() function calls the windrv_GetImage() function, which internally
invokes lock_surface() and unlock_surface(). In this situation, window_surface_lock() is called
first to acquire a lock. When lock_surface() is subsequently called to acquire the same lock,
the initial lock has not yet been released, ultimately resulting in a deadlock.
Signed-off-by: Zhao Yi <zhaoyi(a)uniontech.com>
--
v3: shell32: Fix a memory leak issue.
https://gitlab.winehq.org/wine/wine/-/merge_requests/9180
The d2d_command_list_draw_geometry() function didn't store the 'geometry',
this may cause an error when command replay.
Signed-off-by: YeshunYe <yeyeshun(a)uniontech.com>
--
v2: d2d1: Fix missing geometry assignment in command list recording
https://gitlab.winehq.org/wine/wine/-/merge_requests/9345
When comctl32 v6 is loaded and v6 manifest is disabled, comctl32 v5 should be used when creating a
common control window. However, before this patch, GetModuleHandleW(L"comctl32") return a handle to
comctl32 v6 in this case, so comctl32 v5 doesn't get loaded and creating comctl32 v5 windows fails.
We need to check if comctl32 v5 is actually loaded by using GetModuleHandleW() with the absolute
path of the comctl32 v5 dll.
Fix Word 2010 file open dialog doesn't show a listview.
--
v3: comctl32: Use a magic value to check if an image list is valid.
comctl32/tests: Test image list interoperation with comctl32 v5 and v6.
user32: Fix loading comctl32 v5 after comctl32 v6 is loaded.
comctl32/tests: Test creating v5 windows after v6 manifest is deactivated.
https://gitlab.winehq.org/wine/wine/-/merge_requests/9323