We need to make sure all (important) cleanup is finished when we exit DllMain,
otherwise we might already unload krnl386 and deadlock
Since we can't have a synchronous DestroyWindow, use an extra message
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52511
Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de>
Code flow is like follows:
- DOSVM_Exit -> RtlExitUserThread -> LdrShutdownThread
- acquire loader lock
- send DLL_THREAD_DETACH to imm32
- - calls DestroyWindow on its window
- - WM_DESTROY is handled asynchonously!
- send DLL_THREAD_DETACH to krnl386.exe
- - TASK_ExitTask
- - try get win16 lock, is blocked by ime32
meanwhile, at ime32
- handles WM_DESTROY
- already have win16 lock from user32
- __wine_ime_wnd_proc (WM_DESTROY) -> imm_couninit_thread -> CoRevokeInitializeSpy
- LdrGetProcedureAddress (want CoRevokeInitializeSpy)
- try get loader_lock, is blocked
Solution is to wait in ime32 DllMain until the cleanup as happened, aka CoRevokeInitializeSpy has finished.
--
v6: imm32: Prevent deadlock on unload
https://gitlab.winehq.org/wine/wine/-/merge_requests/1456
On Windows, application-specific settings are stored in the registry
under HKCU\Console\<path_to_app>.
Our implementation of conhost.exe does not know which process is
connected to it, so we need to get the full process image name before
loading any application-specific console settings.
To do this, we extend the server protocol to pass the process Id of
the connected console process to conhost.exe.
Please run tools/make_requests before merging.
--
v2: conhost: Load application-specific settings using the full process image name
https://gitlab.winehq.org/wine/wine/-/merge_requests/1492
On Windows, application-specific settings are stored in the registry
under HKCU\Console\<path_to_app>.
Our implementation of conhost.exe does not know which process is
connected to it, so we need to get the full process image name before
loading any application-specific console settings.
To do this, we extend the server protocol to pass the process Id of
the connected console process to conhost.exe.
Please run tools/make_requests before merging.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1492
This video codec is used by games such as Richman 4, and Zwei: The Arges Adventure.
The decoder logic is based on code from the FFmpeg project.
--
v3: loader/wine.inf: Enable ir50_32 video codec.
ir50_32: Implement decompression to 24-bit RGB.
ir50_32: Implement IV50_DecompressGetFormat.
ir50_32: Implement IV50_DecompressQuery.
ir50_32: Implement IV50_GetInfo.
ir50_32: Add stub dll.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1301
On Tue Nov 22 10:05:37 2022 +0000, Mohamad Al-Jaf wrote:
> Thanks for the detailed feedback and review @besentv and @rbernon. :)
No problem. I actually intend to expand the Wiki article on WinRT programming but I currently don't have much time.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1343#note_16909
This fixes two things:
* HID report descriptor parser enum for local items. Close inspection of page 40 of [Device Class Definition for HID 1.11](https://www.usb.org/document-library/device-class-definition-hid-111) reveals a jump between Designator Maximum (0101) and String Index (0111). This caused a controller of mine to not get recognized.
* HidP_SetUsageValue for items that define multiple controls (with Report Count > 1). Attempting to set one value would result in HIDP_STATUS_BUFFER_TOO_SMALL.
--
v4: hid: Fix HidP_(Get|Set)(Scaled)UsageValue with usage ranges and arrays.
hid: Move (get|set)_usage_value around and use it for scaled values.
winexinput.sys: Fix incorrect HID STRING_INDEX tag value.
winebus.sys: Fix incorrect HID STRING_INDEX tag value.
ntoskrnl.exe/tests: Fix incorrect HID STRING_INDEX tag value.
hidparse.sys: Fix incorrect HID STRING_INDEX tag value.
dinput/tests: Fix incorrect HID STRING_INDEX tag value.
dinput/tests: Add more HidP_(Set|Get)UsageValue tests with array caps.
dinput/tests: Add more tests for HidP_SetUsageValue.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1448