The Wine development release 7.9 is now available. What's new in this release: - Preliminary work towards PE conversion of macOS driver. - A number of fixes for test failures on Windows. - Various bug fixes. The source is available from the following locations: https://dl.winehq.org/wine/source/7.x/wine-7.9.tar.xz http://mirrors.ibiblio.org/wine/source/7.x/wine-7.9.tar.xz Binary packages for various distributions will be available from: https://www.winehq.org/download You will find documentation on https://www.winehq.org/documentation You can also get the current source directly from the git repository. Check https://www.winehq.org/git for details. Wine is available thanks to the work of many people. See the file AUTHORS in the distribution for the complete list. ---------------------------------------------------------------- Bugs fixed in 7.9 (total 35): 14841 ntdll:file tests are flaky 19183 "make test" still fails on d3d9/tests/visual.c 28220 kernel32/process.ok: test fails when redirected 28508 user32:monitor tests fail occasionally 34782 crypt32/chain tests crash with gcc-4.8.1 (win64) 39346 Lego Rock Raiders crashes on startup (d3drm_device_init doesn't handle device version 3 case) 45959 Editpad Lite 7 GUI not rendered correctly 45960 Editpad Lite 7 displays empty boxes instead of text in some menus 49285 PNotesPortable crashes inside WritePrivateProfileStructW 50462 Ulead Photo Explorer 8.5 crashes on startup (needs {4a2286e0-7bef-11ce-9bd9-0000e202599c} CLSID_CMpegAudioCodec) 51104 mf:mf crashes on Windows + AMD/NVidia 51283 d3d8:device breaks evr:evr on w7u-2qxl 51297 d3d8:visual & d3d9:visual, test_sample_mask() fails on Nvidia (cw-gtx560) 51298 d3d8:visual: lighting_test() fails on Windows 10 >= 2004 51376 Wine causes PC to lock or crash wine when loading more than 1 VST addon into WaveLab 6 51612 Stellaris launcher (Paradox) does not launch 51680 nsi:nsi test_ip_neighbour() fails on unreachable link local entry 51783 The ieframe:webbrowser output is too big in Wine 51827 d3dx10_34:d3dx10 crashes on all versions of Windows 52686 DateAdd not implemented 52751 `winetricks nocrashdialog` no longer works properly with Wine 7.5(but works with 7.4) 52761 mscoree:mscoree test fails without a display or console 52821 Cxbx Reloaded needs unimplemented function msvcp140_atomic_wait.dll.__std_atomic_wait_direct 52848 Mavis Beacon Teaches Typing 15: Typed characters not spaced correctly 52874 win32u change prevents chromium from starting 52892 The 64-bit ntdll:thread fails on w7pro64 and w864 52908 mf:mf - The 64-bit test_wma_decoder() fails on 64-bit Debian 11 + Intel 52914 mf:mf - The 64-bit test_h264_decoder() fails on 64-bit Debian 11 + Intel GPU 52937 msvcr110:msvcr110 fails on Windows with the UTF-8 codepage 52961 crypt32:str - test_CertGetNameString() fails on Windows 7 52969 mshtml:script fails on up-to-date Windows 8.1 machines 52970 kernelbase:process breaks lz32:lzexpand_main on Windows 1809+ 52975 VTFEdit fails to start: err:module:LdrInitializeThunk "MSVCP80.dll" failed to initialize, aborting 53004 63ce060 causes a white border line in winecfg 53015 winscp bookmark adding error ---------------------------------------------------------------- Changes since 7.8: Alexandre Julliard (2): kernelbase: Move get_language_sort() to avoid forward declarations. kernelbase: Cache the sortid for each locale. Alistair Leslie-Hughes (7): d3drm: Support IDirect3D3 when creating device. include: Add TF_TMF/TMAW defines. dwmapi: Clear DWM_TIMING_INFO structure before returning. d3drm: IDirect3DRMMeshBuilder2 Get/SetQuality. d3drm: IDirect3DRMTexture3 Get/SetDecalOrigin. d3drm: IDirect3DRMTexture3 Get/SetColors. d3drm: IDirect3DRMTexture3 Get/SetShades. Andrew Eikum (5): mfplat: Allow NULL length pointer in IMFAttributes::GetAllocatedString. mfplat: Consolidate stream and file IMFByteStream vtables. mfplat: Simplify IMFByteStream async Read/Write methods. mfplat: Consolidate stream and file IMFByteStream Read/Write callback vtables. mfplat/tests: Add tests for IMFByteStream position. Anton Baskanov (5): include: Add IMpegAudioDecoder definition. winegstreamer: Add IMpegAudioDecoder stub to MPEG audio decoder. winegstreamer: Register MPEG audio decoder. quartz/tests: Add tests for MPEG audio decoder sample timestamps. winegstreamer: Set sample timestamps in MPEG audio decoder. Bernhard Kölbl (11): windows.media.speech: Add a missing trace to async_operation_create. windows.media.speech/tests: Make the IAsyncInfo_Close block test more consistent. windows.media.speech/tests: Remove some unreliable ref checks. windows.media.speech/tests: Add a test for IAsyncOperation_get_Completed. windows.media.speech: Rename async_operation to async_inspectable. windows.media.speech/tests: Remove a inconsistent ref check. windows.media.speech: Rename impl_from_IAsyncInfo to async_inspectable_impl_from_IAsyncInfo. windows.media.speech/tests: Retype AsyncOperationCompletedHandler to IInspectable. windows.media.speech/tests: Add await helper for IAsyncOperation. windows.media.speech/tests: Make use of a helper function for IAsyncInfo checking. windows.media.speech/tests: Add some recognition tests. Brendan Shanks (10): ntdll/tests: Fix thread test failure on Windows. include: Add WINE_ALLOC_SIZE attribute to CoTaskMemRealloc(). include: Add WINE_ALLOC_SIZE attribute to RtlReAllocateHeap(). include: Add WINE_ALLOC_SIZE attribute to ExAllocatePool functions. include: Add WINE_ALLOC_SIZE attribute to MmAllocate functions. include: Add __WINE_MALLOC attribute and use it for allocation functions. include: Add __WINE_DEALLOC attribute and use it for allocation functions. crypt32/tests: Fix mismatched deallocation function. ntdll: Use 32-bit stack in alloc_fs_sel(). ntdll: Avoid truncating pointer to 32-bits in get_cpu_area(). Charles Davis (6): configure: Check for struct icmpstat. nsiproxy.sys: Implement IPv6 icmpstats get_all_parameters on Mac OS and BSD. nsiproxy.sys: Implement IPv6 ipstats get_all_parameters on Mac OS and BSD. d3d11/tests: Test logic op. d3d11: Implement ID3D11Device1::CreateBlendState1(). ntdll: Implement idle time query for Mac OS. Connor McAdams (2): oleacc/tests: Add tests for retrieving an IAccessible contained within a Dynamic Annotation wrapper. oleacc: Add support for retrieving an HWND from accNavigate to WindowFromAccessibleObject. Dmitry Timoshkov (2): d2d1: Implement ID2D1DeviceContext::CreateImageBrush(). d2d1/tests: Add some tests for ID2D1DeviceContext::CreateImageBrush(). Drew Ronneberg (1): ole32: Remove obsolete -D_OLE32_ from Makefile.in. Eric Pouech (12): winepulse.drv: Use correct integral type. winepulse.drv: Enable compilation with long types. winecoreaudio: Enable compilation with long types. capi2032: Enable compilation with long types. winspool: Enable compilation with long types. winevulkan: Enable compilation with long types. winedbg: Introduce struct data_model to describe the various models for base types. winedbg: Add 'set' command to change data model. dbghelp: Let symt_basic be trans-module and nameless. dbghelp: Fix conversion of dwarf's basic types into dbghelp's basic types. dbghelp: Set correct basic types definition. include: Use Mingw64's __uuidof when present. Fabian Maurer (1): kernel32: Prevent null pointer dereference in WritePrivateProfileStructW. François Gouget (4): shell32: Shelllink: Make the create_lnk() failure messages unique. comctl32/tests: Use winetest_push_context() in tooltip:test_customdraw(). mstask/tests: Ignore the compare_trigger_state() return value. mstask/tests: Fix the compare_trigger_state() failure lines. Gabriel Ivăncescu (8): mshtml/tests: Fix Number toLocaleString test on updated Win 8.1. jscript: Handle detached scope objects 'this' in all calls. jscript: Pass undefined 'this' instead of null in ES5 mode. mshtml: Expose IHTMLDOMImplementation2 members in IE9+ modes. mshtml: Implement HTMLDOMAttribute2's name property. mshtml: Implement window.cancelAnimationFrame. mshtml/tests: Add test for clearing timers with id zero. mshtml: Convert varAsync to bool if needed. Georg Lehmann (3): winevulkan: Prevent infinite recursion in make_vulkan. winevulkan: Update to VK spec version 1.3.213. winevulkan: Update to VK spec version 1.3.214. Gijs Vermeulen (1): shell32/tests: Use 'shellpath' as tmpfile name in PathResolve tests. Hans Leidekker (1): msi/tests: Fix an intermittent test failure. Henri Verbeet (2): maintainers: Update the Direct3D section. maintainers: Update the Direct2D section. Huw D. M. Davies (1): winecoreaudio: Remove DWORDs from the midi syscall interface. Jacek Caban (35): win32u: Move default WM_GETICON implementation from user32. win32u: Move default WM_PAINT implementation from user32. win32u: Move more default window commands from user32. win32u: Move default WM_ERASEBKGND implementation from user32. win32u: Move default WM_WINDOWPOSCHANGING implementation from user32. win32u: Handle sys color brushes in fill_rect. user32: Remove no longer used WINPOS_WindowFromPoint. winemac: Directly use ntdll in setup_options. winemac: Directly use ntdll for querying display settings. winemac: Directly use ntdll to write display settings. winemac: Directly use ntdll for display device mutex. winemac: Directly use ntdll in get_display_device_reg_key. winemac: Directly use ntdll for registry access in init_original_display_mode. winemac: Directly use ntdll for registry access in write_display_settings. winemac: Directly use ntdll for registry access in create_original_display_mode_descriptor. winemac: Directly use ntdll for registry access in copy_system_cursor_name. winemac: Use pthread for display locking. winemac: Use pthread for GDI device locking. winemac: Use pthread for keyboard list locking. winemac: Use pthread for cursor cache locking. winemac: Use pthread for synchronization in opengl.c. winemac: Use pthread for window data locking. winemac: Use pthread_once for wine_vk_init. win32u: Move NtUserSetWindowPlacement implementation from user32. win32u: Move NtUserSetInternalWindowPos implementation from user32. win32u: Export NtUserGetWindowPlacement. win32u: Move desktop window proc implementation from user32. win32u: Introduce DesktopWindowProc driver entry point. winex11: Implement DesktopWindowProc driver entry point. winemac: Implement DesktopWindowProc driver entry point. winemac: Directly use win32u for GDI functions in image.c. winemac: Directly use win32u for GDI functions in mouse.c. winemac: Directly use win32u for GDI functions in opengl.c. winemac: Directly use win32u for GDI functions in surface.c. winemac: Directly use win32u for GDI functions in window.c. Jactry Zeng (4): include: Add MIL/DWM HRESULT codes. dbghelp: Use RtlGetVersion() for system version detection instead. dwmapi: Use RtlGetVersion() for system version detection instead. dwmapi: Partially implement DwmGetCompositionTimingInfo(). James McDonnell (2): include: Add ID2D1PathGeometry1 definition. d2d1: Add a stub for ID2D1PathGeometry1. Jan Sikorski (2): wined3d: Reduce the size of staging BO's for texture uploads. wined3d: Don't do a full cleanup when waiting for a command buffer. Jinoh Kang (1): wineusb.sys: Remove erroneous call to LeaveCriticalSection() in add_usb_device. Julian Klemann (1): ws2_32: Add stub for SIO_ENABLE_CIRCULAR_QUEUEING in WSAIoctl(). Louis Lenders (1): msvcr80: Update manifest resource. Martin Storsjö (3): ntdll: Fix a typo in a log message for arm unwind data. ntdll: Fix accidentally used 64 bit types in signal_arm.c. msvcrt: Hook up __C_specific_handler and __jump_unwind for arm. Matteo Bruni (7): d3dx9/tests: Test D3DXAssembleShader() with both terminated and not terminated include data. d3dcompiler/asm: Parse negative numbers with a whitespace after the sign. d3dx9/mesh: Make use of more proper types. d3dx9/mesh: Split skin header and weights parse functions. d3dx9/shader: Use more proper integer types. d3dx9/xfile: Don't unnecessarily use long integer type. d3dx9: Build without -DWINE_NO_LONG_TYPES. Nikolay Sivov (26): mf/session: Do not request more samples when SA sample becomes available. mfplat/sample: Fix use-after-free of a critical section. evr/sample: Avoid a race condition when releasing a tracked sample. evr/sample: Use explicit critical section for release handling. kernelbase/tests: Close mapping in MapViewOfFile3 test. mfplat: Allow NULL size pointer in IMFAttributes::GetAllocatedBlob(). d3drm/tests: Build without -DWINE_NO_LONG_TYPES. mfreadwrite/reader: Allocate output samples on read requests. vbscript: Implement DateSerial(). mfreadwrite/reader: Propagate resource sharing mode to the sample allocator. include: Move minidump types to a separate header. winedump: Output minidump streams in order they appear in the file. winedump: Cleanup minidump output helpers. winedump: Add support for dumping handle data stream from minidumps. winedump: Add support for ThreadInfoListStream stream. vbscript: Implement DateAdd(). winedump: Add support for dumping UnloadedModuleListStream. vbscript: Implement Weekday(). vbscript: Handle null arguments in DateSerial(). dwrite/opentype: Fix GPOS PairSet array offset. ntdll/tests: Add a bit more tests for VM functions. kernel32/tests: Extend VirtualAllocEx() tests. kernelbase/tests: Add some VirtualAlloc2() tests. kernelbase: Fix VirtualAlloc2() when called with NULL process handle. ntdll/tests: Add a basic test for MEM_RESERVE_PLACEHOLDER. kernelbase: Add SetThreadInformation(). Paul Gofman (18): crypt32/tests: Handle CERT_NAME_SEARCH_ALL_NAMES_FLAG being unsupported before Win8. ntdll: Fix allocation size in grow_logical_proc_ex_buf(). ntdll: Move init_cpu_info() below create_logical_proc_info(). ntdll: Refactor logical processor info manipulation functions. ntdll: Collect logical processor info at process start. rsaenh: Use CRT memory allocators. rsaenh: Handle uneven hash data updates sizes for CALG_MAC. rsaenh: Factor out block_encrypt() function. rsaenh: Store key state in hash data for _MAC hash algorithm. rsaenh: Factor out alloc_key() function. rsaenh: Allow importing bigger RC2 keys. rsaenh: Output FIXME when HMAC hash algorithm is not found. nsiproxy.sys: Update interface table only if find_entry_from_{luid|index} fails. nsiproxy.sys: Finish search once found in convert_luid_to_unix_name(). nsiproxy.sys: Update interface table only if LUID is not found in convert_luid_to_unix_name(). nsiproxy.sys: Update interface table only if LUID is not found in convert_unix_name_to_luid(). nsi: Allocate a small buffer at once in NsiAllocateAndGetTable(). iphlpapi: Don't request unused dynamic interface data. Pedro Perdigão (2): user32/tests: Test an out-of-order RECT in RedrawWindow(). win32u: Allow an out-of-order RECT in RedrawWindow(). Philip Allison (1): uiautomationcore: Fix header compatibility with C++. Piotr Caban (5): msvcr110/tests: Fix setlocale test failure on systems with UTF-8 locales enabled. msvcrt: Reject UTF-8 locales in setlocale function. oleacc: Store test IAccessible data in structure. oleacc: Add IAccessible refcount tests. msvcr120: Add missing _StructuredTaskCollection destructor spec file entry. Robert Wilhelm (1): vbscript: Implement CDate(). Rémi Bernon (83): winegstreamer: Move MFT registration list out of static scope. winegstreamer: Register the video processor transform. mf/tests: Tweak topology loader tests results based on the video processor presence. mf/tests: Update a broken IMFMediaSink_AddStreamSink result check. dinput/tests: Wait for the expected report to actually be pending. windows.gaming.input: AddRef on the returned async handler in get_Completed. windows.gaming.input: Reset spare CS pointer before deleting it. windows.gaming.input: Use case insensitive compare when looking for devices. windows.gaming.input: Register Windows.Gaming.Input.ForceFeedback classes. windows.gaming.input: Implement stub ConstantForceEffect runtimeclass factory. ntdll: Lock heap critical section outside of HEAP_IsRealArena. ntdll: Split HEAP_IsRealArena to heap_validate and heap_validate_ptr. ntdll: Split RtlAllocateHeap to a separate heap_allocate helper. ntdll: Split RtlFreeHeap to a separate heap_free helper. ntdll: Split RtlReAllocateHeap to a separate heap_reallocate helper. ntdll: Split RtlSizeHeap to a separate heap_size helper. ntdll: Introduce new block metadata access helpers. ntdll: Use block size helpers in heap_size. ntdll: Cleanup HEAP_FindSubHeap and rename it to find_subheap. ntdll: Check subheap sizes for consistency before using them. ntdll: Rewrite RtlWalkHeap and enumerate large blocks. dinput/tests: Increase async bool handler wait timeout. windows.gaming.input: Implement and instantiate ConstantForceEffect runtimeclass stubs. windows.gaming.input: Implement IForceFeedbackEffect interface for ConstantForceEffect. windows.gaming.input: Add a type parameter to force_feedback_effect_create. windows.gaming.input: Implement IForceFeedbackMotor_LoadEffectAsync. windows.gaming.input: Implement IForceFeedbackMotor_TryUnloadEffectAsync. ntdll: Use heap_validate_ptr in validate_block_pointer. ntdll: Simplify validate_block_pointer. ntdll: Simplify validate_large_arena. ntdll: Simplify validate_used_block. ntdll: Simplify validate_free_block. hidclass.sys: Clear the buffer passed to IOCTL_HID_GET_DEVICE_DESCRIPTOR. winexinput.sys: Clear the buffer passed to IOCTL_HID_GET_DEVICE_DESCRIPTOR. dinput: Store the user_format field inline in struct dinput_device. dinput: Return an HRESULT from hid_joystick_device_try_open. dinput: Rename This to device in dinput_device_alloc. ntdll: Remove unused QUIET/NOISY constants and parameters. ntdll: Use block helpers to iterate blocks in heap_validate. ntdll: Use next_block helper to iterate in heap_set_debug_flags. ntdll: Check that ptr is in committed blocks in find_subheap. ntdll: Use next_block helper in heap_reallocate. dinput/tests: Add some Windows.Gaming.Input.ForceFeedback.PeriodicForceEffect tests. dinput/tests: Add some Windows.Gaming.Input.ForceFeedback.RampForceEffect tests. dinput/tests: Add some Windows.Gaming.Input.ForceFeedback.ConditionForceEffect tests. windows.gaming.input: Implement Windows.Gaming.Input.RampForceEffect runtimeclass. windows.gaming.input: Implement Windows.Gaming.Input.PeriodicForceEffect runtimeclass. windows.gaming.input: Implement Windows.Gaming.Input.ConditionForceEffect runtimeclass. mf/tests: Move WMA decoder aggregation tests from wmadmod. wmadmod: Remove unnecessary DLL. ntdll: Increase heap large block min size for sizeof(void *) == 8. ntdll: Fail to allocate large blocks if heap isn't growable. ntdll: Simplify the fallback case in heap_reallocate. ntdll: Create free block after updating the size in HEAP_ShrinkBlock. ntdll: Cleanup HEAP_ShrinkBlock and rename it to shrink_used_block. ntdll: Update block unused_bytes in shrink_used_block. dinput/tests: Remove IAsyncOperation reference count checks. windows.gaming.input: Always assume at least two force feedback axes. windows.gaming.input: Implement IForceFeedbackEffect_(get|put)_Gain. windows.gaming.input: Implement IConstantForceEffect_SetParameters(WithEnvelope). windows.gaming.input: Implement IRampForceEffect_SetParameters(WithEnvelope). windows.gaming.input: Implement IPeriodicForceEffect_SetParameters(WithEnvelope). windows.gaming.input: Implement IConditionForceEffect_SetParameters. dinput: Make sure converted direction values are always positive. ntdll: Ignore back pointer when validating free block pattern. ntdll: Use block helpers in subheap_notify_free_all. ntdll: Rename local variables in heap_reallocate. ntdll: Rename local variables in heap_allocate. ntdll: Rename HEAP_FindFreeBlock size parameter. ntdll: Use block size helpers in heap_reallocate. winebus.sys: Add support for PID effect gain. windows.gaming.input: Implement IForceFeedbackEffect_(Start|Stop). windows.gaming.input: Implement IForceFeedbackEffect_get_State. windows.gaming.input: Ignore IDirectInputDevice8_GetDeviceState failures. kernel32/tests: Mark activatableClass wrong xmlns test as broken on w1064v1909. combase: Use CRT memory allocation functions. combase: Lookup activatable class library in the activation context. ntdll: Mask block flags when computing HEAP_InsertFreeBlock size. ntdll: Set ARENA_FLAG_FREE flag in HEAP_CreateFreeBlock. ntdll: Move the main subheap after the free lists. ntdll: Return an entry pointer when looking for a free list. ntdll: Remove entries from the free list in HEAP_FindFreeBlock. ntdll: Cleanup HEAP_FindFreeBlock and rename it to find_free_block. Stefan Dösinger (7): wined3d: Move clear box clipping to cpu_blitter_clear. wined3d: Separate mapping from data writing in surface_cpu_blt_colour_fill. wined3d: Prepare wined3d_format_convert_from_float for > 32bpp formats. wined3d: Add support for sysmem-clearing float32 formats. wined3d: Support CPU clear of float16 formats. wined3d: Mark some d3d9 formats as normalized formats. wined3d: Make normalized format handling more generic in wined3d_format_convert_from_float. Sven Baars (1): d3dx10/tests: Disable a PreloadGlyphs test for d3dx10_34. Torge Matthies (5): ntdll: Use correct output buffer size in RtlpNtEnumerateSubKey. ntdll: Calculate buffer sizes from registry structs correctly. win32u: Calculate buffer sizes from registry structs correctly. win32u: Query basic instead of full key information to get the LastWriteTime. msvcr120: Add tests for _StructuredTaskCollection. Zebediah Figura (18): xslt: Use win32config.h from the correct directory. wineusb.sys: Mark transfer_cb() as LIBUSB_CALL. wineusb.sys: Avoid hard-coding ID string lengths. wineusb.sys: Trace the type in query_id(). wineusb.sys: Expose composite device interfaces. wined3d: Trace bind flags in wined3d_texture_init(). include: Constify the RAWINPUTDEVICE pointer parameter to RegisterRawInputDevices(). shlwapi/tests: Fix a test failure with the UTF-8 code page. dinput: Store the device_format field inline in struct dinput_device. dinput: Factor out the dinput_device_init() call into dinput7_CreateDeviceEx(). dinput: Rename dinput_device_init() to dinput_device_init_device_format(). dinput: Return E_OUTOFMEMORY on allocation failure in hid_joystick_create_device(). dinput: Allocate the dinput_device structure in the caller to dinput_device_alloc(). dinput: Pass a single GUID pointer to hid_joystick_device_open(). dinput: Pass the device instance directly to hid_joystick_device_(try_)open. quartz/systemclock: Use timeGetTime() to retrieve the current time. maintainers: Add a GStreamer section. maintainers: Add a Windows Media Format section. Zhiyi Zhang (10): maintainers: Add myself to some sections. win32u: Fix a memory leak. include: Add D3DKMTQueryVideoMemoryInfo() definition. gdi32/tests: Add D3DKMTQueryVideoMemoryInfo() tests. winex11.drv: Open a Vulkan device for D3DKMTOpenAdapterFromLuid(). gdi32: Implement D3DKMTQueryVideoMemoryInfo(). wined3d: Move kernel mode adapter handle from wined3d_output to wined3d_adapter. dxgi: Implement dxgi_adapter_QueryVideoMemoryInfo() with D3DKMTQueryVideoMemoryInfo(). wined3d: Fill fake adapter video memory usage. dxgi/tests: Test adapter video memory budget notification. Ziqing Hui (6): d2d1: Add stubs for ID2D1EffectContext. d2d1: Implement ID2D1EffectContext_GetDpi(). d2d1: Implement LoadVertexShader(). include: Add defines for D2D1_PROPERTY_BINDING. d2d1/tests: Introduce create_factory(). uuid: Add d2d1effectauthor.h. -- Alexandre Julliard julliard@winehq.org