In ept_map, rpcss uses TowerConstruct to allocate tower array elements.
The array is later released by the generated stub code, and each element
is ultimately freed using MIDL_user_free.
TowerConstruct always allocate memory using I_RpcAllocate, we must use
I_RpcFree to free it.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1521
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.
--
v9: imm32: Prevent deadlock on unload
https://gitlab.winehq.org/wine/wine/-/merge_requests/1456
v2: Expose wined3d_streaming_buffer_map() and wined3d_streaming_buffer_unmap() for strided data upload.
--
v2: wined3d: Add a lower size bound for the streaming buffer allocation.
ddraw: Use the wined3d_streaming_buffer helpers to manage the streaming index buffer.
ddraw: Use the wined3d_streaming_buffer helpers to manage the streaming vertex buffer.
wined3d: Factor out and expose functions to map/unmap wined3d_streaming_buffer.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1427
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45273
--
v15: gdiplus: Add GdipSetCustomLineCapStrokeCaps implementation and usage.
gdiplus: fix shape of CustomLineCap created by GdipCreateAdjustableArrowCap.
gdiplus: Add support for widen path with GpCustomLineCap.
gdiplus: use GpPointF for drawing in widen_closed_figure
gdiplus: Add GdipSetCustomLineCapBaseInset implementation.
gdiplus: Remove not used LineCustomCap parameter.
gdiplus: Add GdipSetCustomLineCapBaseCap implementation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1297
Also fixes a segmentation fault when exiting winedevice.exe.
I can file a separate bug report, but it seems related to Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52213
On my system the core dump can be provoked when using the bus_udev backend in winebus.sys ("Enable SDL" 0). It creates two hid devices - a mouse and a keyboard. Since it resides in the same winedevice.exe process as wineusb.sys, something similar to the above bug occurs when handling the SIGQUIT signal. The actual crash happens in the libusb event thread while waiting in pthread_cond_wait().
I'm using this for months without any issues (with a device driver which uses wineusb.sys for device access, etc.).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1503
These functions are needed by a steam game called Super Naughty Maid.
It uses DMO wrapper filter to play WMV videos.
--
v2: winegstreamer: Implement media_object_GetInputType for WMV decoder.
mf/tests: Test IMediaObject_GetInputType for WMV decoder.
winegstreamer: Implement media_object_GetStreamCount for WMV decoder.
mf/tests: Test IMediaObject_GetStreamCount for WMV decoder.
winegstreamer: Implement profile_GetStreamByNumber.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1423
- v2:
- Allocate 3 buffers instead of 100.
- Add support for MFSampleExtension_Discontinuity.
- v3: Destroy the queue instead of flusing it.
--
v3: winegstreamer: Set the discontinuity flag in wg_transform.
include: Add MFSampleExtension_Discontinuity to mfapi.h.
winegstreamer: Allocate at least 3 buffers for MPEG audio in quartz parser.
winegstreamer: Destroy the sample queue when stopping the quartz transform.
winegstreamer: Hold the streaming lock while destroying wg_transform.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1384