The Wine development release 9.10 is now available. What's new in this release: - Bundled vkd3d upgraded to version 1.12. - DPI Awareness support improvements. - C++ RTTI support on ARM platforms. - More obsolete features removed in WineD3D. - Various bug fixes. The source is available at <https://dl.winehq.org/wine/source/9.x/wine-9.10.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> Wine is available thanks to the work of many people. See the file [AUTHORS][1] for the complete list. [1]: https://gitlab.winehq.org/wine/wine/-/raw/wine-9.10/AUTHORS ---------------------------------------------------------------- ### Bugs fixed in 9.10 (total 18): - #23434 Race management software hangs & jumps up to 100% processor load - #34708 Silent Hill 4: The Room crashes after first videoscene when trying to go to the door. - #45493 SRPG Studio games need proper DISPATCH_PROPERTYPUTREF implementation - #46039 Paint.NET 4.1 (.NET 4.7 app) installer tries to run MS .NET Framework 4.7 installer (Wine-Mono only advertises as .NET 4.5) - #46787 Notepad++ rather slow (GetLocaleInfoEx) - #50196 can not copy words between wine apps and ubuntu apps - #50789 Multiple .NET applications crash with unimplemented 'System.Security.Principal.WindowsIdentity.get_Owner' using Wine-Mono (Affinity Photo 1.9.1, Pivot Animator 4.2) - #52691 FL Studio 20.9.1 Freezes on start-up - #54992 EA app launcher does not render correctly - #56548 reMarkable crashes on start - #56582 vb3 combobox regression: single click scrolls twice - #56602 DualShock 4 controller behaves incorrectly on Darwin with hidraw enabled - #56666 BExAnalyzer from SAP 7.30 does not work correctly - #56674 Multiple games fail to launch (Far Cry 3, Horizon Zero Dawn CE, Metro Exodus) - #56718 Compilation fails on Ubuntu 20.04 with bison 3.5.1 - #56724 New chromium versions don't start under wine anymore - #56730 Access violation in riched20.dll when running EditPad - #56736 App packager from Windows SDK (MakeAppx.exe) 'pack' command crashes on unimplemented function ntdll.dll.RtlLookupElementGenericTableAvl ### Changes since 9.9: ``` Aida Jonikienė (2): dxdiagn: Add bIsD3DDebugRuntime property. dxdiagn: Add AGP properties. Alexandre Julliard (52): msvcrt: Add helpers to abstract RVA accesses to RTTI data. msvcrt: Unify __RTtypeid implementation. msvcrt: Unify __RTDynamicCast implementation. msvcrt: Unify _CxxThrowException implementation. msvcrt: Unify _is_exception_typeof implementation. msvcrt: Unify __ExceptionPtrCopyException implementation. msvcrt: Unify exception_ptr_from_record implementation. msvcrt: Unify call_copy_ctor/call_dtor implementations. msvcp: Unify __ExceptionPtrCopyException implementation. msvcp: Unify __ExceptionPtrCurrentException implementation. msvcp: Unify call_copy_ctor/call_dtor implementations. msvcrt: Use RVAs in rtti and exception data on all platforms except i386. msvcp: Use RVAs in rtti and exception data on all platforms except i386. msvcrt/tests: Use function pointers to bypass builtin malloc/realloc. msvcp/tests: Fix mangled names on ARM. winecrt0: Initialize the Unix call dispatcher on first use. ntdll: Make __wine_unix_call() an inline function. wbemprox: Avoid unused function warning. kernelbase: Fix the name of the default system locale. wbemprox: Don't reference yysymbol_name on older bisons. conhost: Fix a printf format warning. winegcc: Don't print a potentially reallocated pointer. adsldpc: Add correct C++ mangled names for all platforms. dxtrans: Add correct C++ mangled names for all platforms. msmpeg2vdec: Add correct C++ mangled names for all platforms. vssapi: Add correct C++ mangled names for all platforms. msvcrt: Fix bad_cast_copy_ctor spec entry on ARM. msvcrt: Export all _ConcRT functions also on ARM. msvcp120_app: Fix a typo in a C++ mangled name. msvcp: Replace some stubs by exported functions that already exist for other platforms. msvcp: Export the thiscall version of ios_base_Tidy. msvcp140: Sort entry points by function instead of platform. msvcp: Only export thiscall functions on i386. msvcp: Only export stubs of thiscall functions on i386. msvcrt: Only export thiscall functions on i386. msvcrt: Only export stubs of thiscall functions on i386. msvcrt: Add missing C++ mangled names for ARM. msvcirt: Add missing C++ mangled names for ARM. msvcp60: Add missing C++ mangled names for ARM. msvcp70: Add missing C++ mangled names for ARM. msvcp71: Add missing C++ mangled names for ARM. msvcp80: Add missing C++ mangled names for ARM. msvcp90: Add missing C++ mangled names for ARM. msvcp100: Add missing C++ mangled names for ARM. winedump: Print exported function names in the exception data. winedump: Print the export or import name of exception handlers. winedump: Dump exception data for known exception handlers. vkd3d: Import upstream release 1.12. msvcrt: Move common exception handling types to the header. msvcrt: Share the find_caught_type() helper between platforms. msvcrt: Share the copy_exception() helper between platforms. msvcrt: Share a helper to find a catch block handler. Alexandros Frantzis (15): opengl32: Remove the wglDescribePixelFormat driver entry point. win32u: Emit number characters for numpad virtual keys. win32u: Allow drivers to send only the scan code for keyboard events. win32u: Store the full KBD vkey information in kbd_tables_init_vsc2vk. server: Send numpad virtual keys if NumLock is active. user32/tests: Add tests for SendInput with numpad scancodes. winewayland.drv: Populate vkey to wchar entry for VK_DECIMAL. server: Fix handling of KEYEVENTF_UNICODE inputs with a non-zero vkey. user32/tests: Add more test for unicode input with vkey. user32/tests: Add tests for raw keyboard messages. server: Use right-left modifier vkeys for hooks. server: Apply modifier vkey transformations regardless of unicode flag. server: Don't send raw input events for unicode inputs. user32/tests: Check async key state in raw nolegacy tests. server: Set VK_PACKET async state in raw input legacy mode. Alistair Leslie-Hughes (10): include: Complete __wine_uuidof for C++. include: Add C++ support for IUnknown. odbc32: Correct SQLSetConnectOptionW length parameter type. include: Added sqlucode.h to sql.h. include: Correct ListView_GetItemIndexRect macro. include: Add IFACEMETHOD macros. include: Add LOGFONTA/W typedef in shtypes.idl. include: Add IPreviewHandler* interfaces. include: Correct IRowsetNotify HROW parameter type. include: Add missing TreeView_* defines. Anton Baskanov (4): quartz/tests: Use unaligned width in AVIDec tests to expose incorrect stride calculation. quartz: Get output format from source, not sink in AVIDec. quartz: Use the correct stride when calculating image size in AVIDec. quartz: Hold the streaming lock while calling ICDecompressEnd. Brendan Shanks (1): ntdll: Don't warn on macOS and FreeBSD when xattr doesn't exist. Connor McAdams (1): uiautomationcore: NULL initialize SAFEARRAY variable passed to IRawElementProviderFragment::GetRuntimeId(). Daniel Lehman (1): odbc32: Allow null handle for SQLSetEnvAttr. Danyil Blyschak (3): win32u: Remove external fonts from the registry before writing to it. shcore: Check optional pointer in filestream_CopyTo() before writing to it. wineps.drv: Only merge dmDefaultSource member of devmodes when a slot is found. Davide Beatrici (6): winealsa: Return minimum period in get_device_period if requested. mmdevapi: Adjust timing in AudioClient_Initialize. winealsa: Remove superfluous timing adjustment. winecoreaudio: Remove superfluous timing adjustment. wineoss: Remove superfluous timing adjustment. winepulse: Remove superfluous timing adjustment. Dmitry Timoshkov (2): comctl32/tests: Create a fully updated ListView window. user32/tests: Add a test to show that SendMessage(LB_SETCOUNT) adds a scrollbar. Elizabeth Figura (21): wined3d: Remove the no longer used STATE_SAMPLER. wined3d: Remove the no longer used STATE_POINTSPRITECOORDORIGIN. wined3d: Remove the FFP blitter. wined3d: Remove some obsolete state invalidations. wined3d: Remove the no longer needed fragment_caps.proj_control flag. d3d9/tests: Remove leftover debugging code. wined3d: Remove the no longer needed fragment_caps.srgb_texture flag. wined3d: Remove the no longer needed fragment_caps.color_key flag. wined3d: Remove the no longer needed wined3d_vertex_caps.xyzrhw flag. wined3d: Remove the no longer needed wined3d_vertex_caps.ffp_generic_attributes flag. wined3d: Remove the no longer used buffer conversion code. wined3d: Remove the no longer used wined3d_context.fog_coord field. wined3d: Remove the no longer used wined3d_context_gl.untracked_material_count field. wined3d: Remove the no longer used wined3d_context.use_immediate_mode_draw field. wined3d: Remove the no longer used WINED3D_SHADER_CAP_VS_CLIPPING flag. wined3d: Remove the no longer used wined3d_context.namedArraysLoaded field. wined3d: Remove the no longer used WINED3D_SHADER_CAP_SRGB_WRITE flag. wined3d: Move the GL_EXTCALL() definition to wined3d_gl.h. wined3d: Remove some no longer used wined3d_context fields. wined3d: Remove no longer used "exponent" and "cutoff" precomputed fields. wined3d: Remove the no longer used ignore_textype argument of wined3d_ffp_get_fs_settings(). Eric Pouech (4): conhost: Fix display of font preview in 64-bit mode. winedump: Dump correct handle information for minidump. winedump: Don't dump twice. winedump: Dump Memory64List streams in minidumps. Esme Povirk (14): gdiplus: Replace HDC check in GdipFlush. gdiplus: Bracket HDC use in GdipMeasureCharacterRanges. gdiplus: Bracket HDC use in GdipMeasureString. gdiplus: Bracket HDC use in GdipDrawString. gdiplus: Bracket HDC use in GDI32_GdipDrawDriverString. gitlab: Add unzip to build image. gdiplus: Replace HDC use in draw_driver_string. gdiplus: Bracket HDC use in get_path_hrgn. gdiplus: Bracket HDC use in gdi_transform_acquire/release. gdiplus: Do not store HDC on HWND Graphics objects. gdiplus: Don't call GetDeviceCaps for NULL dc. user32/tests: Rename winevent_hook_todo to msg_todo. user32/tests: Mark some Wine-todo messages. win32u: Implement EVENT_SYSTEM_FOREGROUND. Fabian Maurer (5): oleaut32: Add test for invoking a dispatch get-only property with DISPATCH_PROPERTYPUT. oleaut32: Handle cases where invoking a get-only property with INVOKE_PROPERTYPUT returns DISP_E_BADPARAMCOUNT. userenv: Add CreateAppContainerProfile stub. riched20: In para_set_fmt protect against out of bound cTabStop values. user32/tests: Fix ok_sequence succeeding in todo block not giving a test failure. Francis De Brabandere (1): vbscript/tests: Fix error clear call. Ilia Docin (1): sane.ds: Add missing color modes setting support. Jacek Caban (30): mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmlobject.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmlscript.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmlselect.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmlstorage.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmlstyle.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmlstyleelem.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmlstylesheet.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmltable.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmltextarea.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in htmltextnode.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in mutation.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in omnavigator.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in range.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in selection.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in svg.c. mshtml: Use DISPEX_IDISPATCH_IMPL macro in xmlhttprequest.c. ntdll: Use assembly wrapper for unixlib calls on ARM64EC. d3d9/tests: Use GNU assembly syntax on clang x86_64 MSVC target. d3d8/tests: Use GNU assembly syntax on clang x86_64 MSVC target. d3d9: Use GNU assembly syntax on clang x86_64 MSVC target. d3d8: Use GNU assembly syntax on clang x86_64 MSVC target. ddraw: Use GNU assembly syntax on clang x86_64 MSVC target. gitlab: Use --enable-werror for Clang builds. mshtml: Return success in IHTMLWindow2::get_closed stub. mshtml/tests: Add more custom properties tests. mshtml: Factor out alloc_dynamic_prop. mshtml: Use DispatchEx vtbl for elements as window property lookups. mshtml: Use DispatchEx vtbl for all window properties. mshtml: Use macro for window object IDispatch functions implementation. mshtml: Move IDispatchEx forwarding implementation to outer window object. Krzysztof Bogacki (7): win32u: Use separate variable for inner loop. win32u: Log Vulkan GPU's PCI IDs when matching against them. win32u: Log Vulkan UUIDs when adding GPUs. win32u: Remove unused variable from add_vulkan_only_gpus. win32u: Use common name for fake GPUs and prefer Vulkan name over it. win32u: Prefer Vulkan PCI IDs over empty ones. win32u: Prefer Vulkan UUIDs over empty ones. Marcus Meissner (1): shell32/tests: Fixed sizeof to GetModuleFileName. Myah Caron (1): msvcrt: Fix _kbhit ignoring the last event. Nikolay Sivov (3): gdi32/text: Make GetTextExtentExPointW() return sizes consistent with ExtTextOutW(). d3dcompiler/fx: Write empty buffers for compiler versions 33-39. d3dcompiler: Enable D3DCOMPILE_EFFECT_CHILD_EFFECT option. Paul Gofman (4): wine.inf: Add InstallationType field to CurrentVersion. wine.inf: Add Explorer\Advanced registry key. mf/tests: Add a test for MFEnumDeviceSources(). mf: Implement audio capture device enumeration in MFEnumDeviceSources(). Piotr Caban (1): ntdll: Fix UNC path handling in alloc_module. Rémi Bernon (57): win32u: Fix default_update_display_devices return type to NTSTATUS. win32u: Load the graphics driver vulkan functions lazily. win32u: Keep a list of vulkan GPUS in the device manager context. win32u: Match driver GPUs with vulkan GPUS from their ids, or index. win32u: Query GPU memory from vulkan physical device. win32u: Enumerate offscreen vulkan devices as GPU devices. dinput: Dynamically allocate the internal device / event arrays. server: Pass the adjusted vkey to send_hook_ll_message. winegstreamer: Use DMO_MEDIA_TYPE in the WMA decoder. winegstreamer: Implement WMA DMO Get(Input|Output)CurrentType. win32u/tests: Introduce a new run_in_process helper. win32u/tests: Add NtUser(Get|Set)ProcessDpiAwarenessContext tests. win32u: Fix NtUserSetProcessDpiAwarenessContext. user32/tests: Add some SetProcessDpiAwarenessContext tests. user32/tests: Add more SetThreadDpiAwarenessContext tests. user32: Fix SetProcessDpiAwarenessContext. winegstreamer: Use a GstCaps for wg_parser current_format. winegstreamer: Use a GstCaps instead of preferred_format. winegstreamer: Rename get_preferred_format to get_current_format. winegstreamer: Use a GstCaps for wg_parser_stream codec format. win32u: Get rid of the drivers force_display_devices_refresh flag. win32u: Update the display device cache after loading the driver. win32u: Get rid of the UpdateDisplayDevices force parameter. user32: Test and fix IsValidDpiAwarenessContext. user32: Test and implement GetDpiFromDpiAwarenessContext. user32/tests: Add more AreDpiAwarenessContextsEqual tests. user32/tests: Add more GetAwarenessFromDpiAwarenessContext tests. win32u: Use NtUserCallOnParam for SetThreadDpiAwarenessContext. win32u: Return UINT from NtUserGetWindowDpiAwarenessContext. win32u: Use NtGdiDdDDICreateDCFromMemory for gdi16 DIBDRV. wineandroid: Fix NtUserSendHardwareInput parameter order. wineandroid: Use DWORD for pixel pointers. win32u: Flush window surface when it is fully unlocked. win32u: Remove surface recursive locking requirement. win32u: Stop using a recursive mutex for the offscreen surface. wineandroid: Stop using a recursive mutex for the window surfaces. winemac: Stop using a recursive mutex for the window surfaces. winewayland: Stop using a recursive mutex for the window surfaces. winex11: Stop using a recursive mutex for the window surfaces. win32u: Get the thread DPI context instead of the awareness. win32u: Pass the DPI awareness context in win_proc_params. win32u: Fix SetThreadDpiAwarenessContext. win32u: Only keep DPI awareness context with window objects. win32u: Introduce a new window_surface_init helper. win32u: Move the window surface mutex to the surface header. win32u: Use helpers to lock/unlock window surfaces. win32u: Move window surface bounds to the window_surface base struct. winemac: Get rid of unnecessary blit_data / drawn surface members. wineandroid: Hold the lock while reading window surface bits. win32u: Use a helper to flush window surface, factor locking and bounds reset. win32u: Initialize window surfaces with a hwnd. win32u: Split update_surface_region into get_window_region helper. server: Merge get_surface_region / get_window_region requests together. win32u: Intersect the clipping region with the window shape region. server: Update window surface regions when the window is shaped. wineandroid: Remove now unnecessary set_surface_region calls. win32u: Use a helper to set the window surface clipping, within the lock. Vijay Kiran Kamuju (1): ntdll: Add stub RtlLookupGenericTableAvl function. Yuxuan Shui (2): shell32: Make sure array passed to PathResolve is big enough. shell32: Fix ShellExecute for non-filespec paths. Zhiyi Zhang (4): comctl32/tests: Add WM_SETFONT tests. comctl32/syslink: Don't delete font when destroying the control. comctl32/tooltips: Don't duplicate font when handling WM_SETFONT. comctl32/ipaddress: Delete font when destroying the control. ```