The Wine development release 8.9 is now available. What's new in this release: - Mono engine updated to version 8.0.0. - Completion of PE conversion in the PostScript driver. - Doppler shift support in DirectSound. - GdiPlus performance improvements. - Various bug fixes. The source is available at: https://dl.winehq.org/wine/source/8.x/wine-8.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 8.9 (total 16): - #3452 BC3000 - Horribly Slow - #36230 Silverlight 5.x requires the "Audio Capture Filter" for recording from the microphone - #50955 .netCore app can't bind to port shortly after another .netCore program binding to the same port was terminated - #53860 Wine Notepad : Using Japanese Input Method(IM), sometimes cursor goes back when string converted - #54916 touhou 12.3 with dpad mod crashes on start - #54917 Need For Speed Underground has keyboard input issues - #54934 Battle.net unimplemented function msauddecmft.dll.DllGetClassObject called in 32-bit code - #54936 Wine 8.7 and 8.8 does not print - #54939 Dotted files are shown - but "don't show dotted" files is active - #54955 Battle.net crashes on unimplemented function msmpeg2vdec.dll.DllGetClassObject - #54956 Framemaker 8 crashes on printing - #54960 winhttp:winhttp - test_websocket() fails on Windows and Wine - #54965 Rich Edit erroneously moves the cursor to the end of text when system IME composition ends - #54974 armv7 ELF builds crashing since "ntdll: Support the machine extended parameter in NtMapViewOfSectionEx()." - #54976 Mono/.Net assemblies fail to start: Application could not be started, or no application associated with the specified file. - #54982 Visio 2003 print dialog shows broken paper sizes when printing ---------------------------------------------------------------- Changes since 8.8: Alex Henrie (3): mshtml: Fix memory leak on error path in add_func_info (Coverity). mshtml: Only allow one thread to use Gecko. setupapi: Use CRT functions for memory allocation where possible. Alexandre Julliard (19): ntdll: Fix typo in the check for hidden files. ntdll: Catch MEM_EXTENDED_PARAMETER duplicates for all types. ntdll: Use STATUS_NOT_SUPPORTED for internal machine mismatch errors. ntdll: Support the machine extended parameter in NtMapViewOfSectionEx(). ntdll: Add a helper function to map the main exe module. ntdll: Don't even try to load .so libraries for a different machine. ntdll: Support the PS_ATTRIBUTE_MACHINE_TYPE attribute for new processes. kernelbase: Add a helper function to validate process/thread attributes. kernelbase: Add support for the PROC_THREAD_ATTRIBUTE_MACHINE_TYPE attribute. start: Move memory allocation into parse_title(). start: Add a separate helper to parse command line options. start: Use CRT allocation functions. start: Implement the /machine option. ntdll: Add a separate helper function for freeing a placeholder. server: Add a separate request to create a memory view for an image mapping. server: Return STATUS_IMAGE_MACHINE_TYPE_MISMATCH when the mapping's machine differs from the process. configure: Don't create the wine64 symlink in multi-arch builds. ntdll: Also update the entry point address when loading an ARM64X binary. ntdll: Allocate the ARM64EC code map when the first ARM64X binary is loaded. Alexandros Frantzis (6): winewayland.drv: Allocate process_wayland statically. winewayland.drv: Read and dispatch Wayland events. winewayland.drv: Handle dynamic Wayland output events. winewayland.drv: Make access to Wayland output information thread-safe. winewayland.drv: Update display devices from the desktop window thread. winewayland.drv: Update desktop window size on display changes. André Zwing (1): winedump: Recognize RISC-V PEs. Anton Baskanov (20): winegstreamer: Add a second videoconvert before the videoflip. winegstreamer: Don't force top-down orientation when changing output format in video_decoder. ir50_32: Let video_decoder flip the video instead of doing it manually. dsound: Store the frequency of 3D buffers separately. dsound/tests: Add tests for Doppler shift. dsound: Enable Doppler shift. dsound: Change the speed of sound to 360. dsound: Avoid division by zero when calculating Doppler shift. dsound/tests: Test Doppler shift with moving listener. dsound: Use relative velocity to compute Doppler shift. dsound/tests: Test that the Doppler shift is limited to +-0.5 speed of sound. dsound: Limit the Doppler shift to +-0.5 speed of sound. dsound/tests: Test that the shifted frequency is limited to DSBFREQUENCY_MAX. dsound: Clamp the shifted frequency to [DSBFREQUENCY_MIN, DSBFREQUENCY_MAX]. dsound/tests: Test Doppler shift in head-relative mode. dsound: Fix Doppler shift in head-relative mode. dsound/tests: Test Doppler shift with 3D processing disabled. dsound: Use the value from SetFrequency when 3D processing is disabled. dsound/tests: Test distance and Doppler factor. dsound: Take distance and Doppler factor into account. Aurimas Fišeras (1): po: Update Lithuanian translation. Bartosz Kosiorek (7): gdiplus: Improve performance of GdipInvertMatrix. gdiplus: Improve performance of gdip_transform_points. gdiplus: Fix GdipGetGenericFontFamily functions according to native gdiplus.dll. gdiplus: Limit calculating transformation points to resampling. gdiplus: Use iterator instead calculate pointer position every time. gdiplus: Use float increment instead of calculation to impove perf. gdiplus: Improve performance of DrawImagePointsRect by avoid TransformMatrixPoints. Bernhard Kölbl (1): mf: Don't try to clone non existent topo connections. Brendan Shanks (8): winemac: Fix window scaling in high-res/retina mode when using a non-retina monitor. winemac: Remove the unused WineContentView _retinaMode variable. winemac: Centralize initialization of WineContentView. winemac: Centralize setting retina-mode-dependent properties on WineContentView's layer. winemac: Work around poor-quality downscaling in high-res/retina mode on macOS 10.13 and earlier. winemac: Add missing event to dbgstr_event(). winemac: Explicitly link against Foundation.framework. win32u: Propagate WM_MOUSEHWHEEL to the parent window in DefWindowProc(). Connor McAdams (7): include: Define the remaining missing provider interfaces. uiautomationcore: Don't leak parent node in conditional_navigate_uia_node. uiautomationcore: Fix maximum ID comparison for uia_{prop,pattern,control}_info_from_id(). uiautomationcore/tests: Add tests for non-nested node events. uiautomationcore: Implement UiaAddEvent. uiautomationcore: Implement UiaRemoveEvent. uiautomationcore: Call IRawElementProviderAdviseEvents methods when events are added or removed. Davide Beatrici (16): winepulse: Move AudioCaptureClient into mmdevapi. winealsa: Use mmdevapi's AudioCaptureClient. winecoreaudio: Use mmdevapi's AudioCaptureClient. wineoss: Use mmdevapi's AudioCaptureClient. winepulse: Move AudioRenderClient into mmdevapi. winealsa: Use mmdevapi's AudioRenderClient. winecoreaudio: Use mmdevapi's AudioRenderClient. wineoss: Use mmdevapi's AudioRenderClient. winealsa: Implement get_device_period in unixlib. winecoreaudio: Implement get_device_period in unixlib. wineoss: Implement get_device_period in unixlib. winepulse: Implement is_format_supported in unixlib. explorer: Fix uninitialized variable warning. winealsa: Move stream mode and period/duration initialization logic into unixlib. winecoreaudio: Move stream mode and period/duration initialization logic into unixlib. wineoss: Move stream mode and period/duration initialization logic into unixlib. Eric Pouech (1): kernel32/tests: Harden some wow64 module tests. Esme Povirk (3): mscoree: Update Wine Mono to 8.0.0. mscoree: Use updated preload hook function. mscoree: Search the Mono GAC before the appdomain paths. Floris Renaud (1): po: Update Dutch translation. François Gouget (18): iphlpapi/tests: Use win_skip() for missing APIs. ws2_32/tests: Use win_skip() for missing APIs. wtsapi32/tests: Use win_skip() for missing APIs. wintab32/tests: Use win_skip() for missing dlls. gdi32/tests: Use win_skip() for missing APIs. sti/tests: Use win_skip() for missing APIs. ntdll/tests: Use win_skip() for missing APIs. imm32/tests: Fix the spelling of a comment. mf/tests: Fix the spelling of a win_skip() message. msado15: Fix the spelling of a comment. ndtll: Fix the spelling of a comment. taskschd/tests: Fix the spelling of a test string. uiautomationcore/tests: Fix the spelling of a win_skip() message. dnsapi/tests: Ignore OPT records in the CNAME tests. wineps: Fix the spelling of a constant. gdi32/tests: Use skip() for APIs which are stubs in some drivers. wininet/tests: Consistently use strlen() in the InternetGetConnectedStateExA() tests. wininet/tests: Consistently use strlen() instead of lstrlenA(). Gabriel Ivăncescu (9): mshtml: Explicitly hold ref to the plugin host in NPP_New. mshtml: Release ref from the element when detaching the plugin host. mshtml: Stop the plugin when detaching the plugin host. mshtml: Expose the other remaining props for element.classList. mshtml: Implement classList's contains() method. mshtml: Implement classList's toggle() method. mshtml: Implement classList's length prop. mshtml: Implement classList's item() method. mshtml: Implement indexed props for classList. Giovanni Mascellani (1): winegstreamer: Free the GStreamer buffer when freeing a WG parser stream. Hans Leidekker (2): webservices: Handle WS_XML_BUFFER_TYPE in get_field_read_option(). winhttp/tests: Fix a test failure. Jacek Caban (16): win32u: Use syscall interface for NtGdiOpenDCW. win32u: Use syscall interface for more painting functions. win32u: Use syscall interface for more painting functions. win32u: Use syscall interface for more printer functions. win32u: Use syscall interface for more path functions. win32u: Pass blend function as DWORD to NtGdiAlphaBlend. win32u: Use syscall interface for bitblt functions. win32u: Use syscall interface for more bitmap functions. win32u: Use syscall interface for D3DKMT functions. win32u: Use syscall interface for DIB functions. win32u: Use syscall interface for more DC functions. win32u: Use syscall interface for more GDI object functions. win32u: Use syscall interface for more font functions. win32u: Use syscall interface for more font functions. win32u: Use syscall interface for more clipping functions. win32u: Use syscall interface for all ntgdi functions. Jactry Zeng (8): comdlg32: Calculate button height of toolbar with DPI for item dialog. comdlg32: Set a size for toolbar buttons of the file access dialog. shell32/tests: Add tests for IFolderView2_{Get, Set}CurrentFolderFlags(). shell32: Implement IFolderView2_{Get, Set}CurrentFolderFlags(). shell32: Reimplement IFolderView2_SetCurrentViewMode() with modern behaviours. shell32/tests: Move tests of IExplorerBrowser_SetFolderSettings() to a separated function and more tests. shell32: Reimplement IExplorerBrowser_SetFolderSettings() with support of setting flags. shell32: Update view mode flags while creating IShellView for IExplorerBrowser. Jinoh Kang (4): combase: Fix reading from beyond the end of a HGLOBAL stream. combase: Compare AddRef() return value against 1 instead of 0 in find_proxy_manager. combase: Prevent use-after-free due to a race with proxy_manager_destroy. imm32: Don't erroneously start composition when handling IMC_SETOPENSTATUS. Mohamad Al-Jaf (2): msauddecmft: Add DllGetClassObject() stub. msmpeg2vdec: Add DllGetClassObject() stub. Nikolay Sivov (11): d2d1: Implement IsSupported() for HWND target. wineps: Fix names in paper sizes list. mfmediaengine: Implement GetNumberOfStreams(). d2d1: Implement IsSupported() for DC target. d2d1/tests: Use test context for more tests. d2d1: Reject D2D1_ALPHA_MODE_STRAIGHT alpha mode for HWND targets. d2d1/tests: Add some more tests for ID2D1GdiInteropRenderTarget. d2d1: Create GDI-compatible target bitmap for GDI-compatible target usage. d2d1: Improve GetDC()/ReleaseDC() handling on render targets. d2d1: Create GDI-compatible swapchain only for corresponding target usage. d2d1: Improve resource properties check when creating a bitmap. Paul Gofman (16): ntdll: Fix tail padding in mark_block_tail(). ntdll: Fix last block detection in heap_walk_blocks(). kernel32/tests: Add tests for subheap sizes. ntdll: Better match Windows subheap sizes. ntdll: Handle context overlap in call_user_exception_dispatcher() on x64. wined3d: Only set changed.lights if wined3d_light_state_enable_light() changed state. wined3d: Track per light state changes in stateblock. wined3d: Use RB tree for storing lights. nsiproxy.sys: Detect PPP interface type from flags on Linux. ntdll: Handle NULL process handle in MapViewOfFile3(). ntdll: Pass allocation type to map_view(). ntdll: Support MEM_RESERVE_PLACEHOLDER in NtAllocateVirtualMemoryEx(). ntdll: Support MEM_REPLACE_PLACEHOLDER in map_view(). ntdll: Support MEM_REPLACE_PLACEHOLDER in NtAllocateVirtualMemoryEx(). ntdll: Support MEM_PRESERVE_PLACEHOLDER in NtFreeVirtualMemory(). ntdll/tests: Add more tests for placeholders. Piotr Caban (27): wineps: Convert WCHAR to Adobe Glyph name on PE side. wineps: Store builtin fonts list in DEVMODE. include: Add ddk/winddi.h header. wineps: Add support for loading builtin fonts from NTF files. wineps: Enumerate NTF fonts in enum_fonts. wineps: Pass font data in NTF format to unixlib. wineps: Don't pass PRINTERINFO structure to unixlib. wineps: Introduce wine_driver_open_dc wine specific export used to create printer DC. wineps: Implement Wow64 entry points in the Unix library. wineps: Use default devmode if winspool returns fake data. winspool: Register wineps print processor before adding printer. localspl: Fix wow64_start_doc Wow64 entry point. wineps: Move BANDINFOSTRUCT definition to unixlib.c. wineps: Define PSDRV_DEVMODE in unixlib.h. wineps: Remove unix_ prefix from find_pagesize and find_slot functions. wineps: Mark default DEVMODE const. wineps: Simplify PSDRV_UVMetrics implementation. wineps: Remove unused fields from print_ctx. wineps: Don't store logPixels in print_ctx. wineps: Don't store ImageableArea in print_ctx. gdi32: Mark objects as not used before clearing handles table in emf_reset. localspl: Implement AbortPrinter while spooling. winspool: Add AbortPrinter implementation. gdi32: Abort printing if DeleteDC is called before EndDoc. wineps: Remove no longer used PSDRV_SelectDownloadFont helper. wineps: Mark font as unset in PSDRV_SelectFont. wineps: Fix download font escapement. Rémi Bernon (48): imm32: Update the IME composition window position after drawing. imm32: Use DrawTextW to wrap IME composition string. comctl32/edit: Notify IME on caret position, format_rect and font changes. comctl32/edit: Delegate composition string rendering to the IME UI. user32/edit: Notify IME on position, format_rect and font changes. user32/edit: Delegate composition string rendering to the IME UI. hid: Avoid printing uninitialized guid (Valgrind). dinput/tests: Avoid leaking a IDirectInput reference (Valgrind). dinput/tests: Avoid leaking data in add_file_to_catalog (Valgrind). windows.gaming.input: Avoid leaking IDirectInputEffect reference (Valgrind). winemac: Return the caret position in query_ime_char_rect. winemac: Remove now unnecessary selected HIMC tracking code. winemac: Use the default IME implementation for ImeSelect. dinput/tests: Add a zero-terminator for hardware ids (Valgrind). mf/tests: Release PROPVARIANT memory in check_attributes (Valgrind). mf/tests: Avoid leaking media types in test_video_processor (Valgrind). rtworkq: Release thread pool work object when work_item is destroyed (Valgrind). winegstreamer: Fix the CS cleanup in wg_sample_queue_destroy (Valgrind). winegstreamer: Free the params structure after setting the pool meta (Valgrind). winegstreamer: Remove unnecessary wg_parser their_sink pad. winegstreamer: Remove unnecessary wg_parser_stream their_src pad. quartz: Avoid reading past the end of a buffer (Valgrind). winex11: Use ime_comp_buf != NULL instead of ximInComposeMode. winex11: Keep track of the cursor position on the XIM side. winex11: Send an internal WM_IME_NOTIFY wparam to set open status. winex11: Set or clear XIC focus using a xim_set_focus helper. winex11: Post internal WM_IME_NOTIFY wparam on composition updates. winex11: Include the XIM preedit and result text into the IME updates. winex11: Generate IME messages using WM_IME_NOTIFY instead of callbacks. winex11: Drop the x11drv_ime_update_association user callback. winex11: Remove now unnecessary selected HIMC tracking code. winex11: Use the default IME implementation for ImeSelect. imm32: Get rid of the graphics driver loading mechanism. imm32: Remove now unused members from ime_private. dinput/tests: Add some tests with keyboard action mapping. dinput: Delete the action mapping registry key on SetActionMap. dinput: Reset action map mapping before loading the registry mapping. dinput: Clear DIA_APPNOMAP BuildActionMap flag with specific device semantic. dinput: Avoid remapping already mapped objects in BuildActionMap. dinput: Delay input thread start until the first device acquire. dinput/tests: Test that FromGameController also works with IRawGameController. windows.gaming.input: Query IGameController interface in TryGetFactoryControllerFromGameController. mf/tests: Simplify video processor expected input types checks. mf/tests: Rename some variables in video processor transform tests. mf/tests: Move broken video processor aperture to a separate test. mf/tests: Add more video processor tests with RGB555 format. mf/tests: Add some IV50 encoder / decoder tests. imm32: Silence some unnecessary FIXMEs. Sebastian Mayr (2): d3d8/tests: Test IDirect3DDevice8::ValidateDevice() with various min, mag and mip filters. wined3d: Improve d3d8 compatibility of texture filters. Tim Clem (1): wow64win: Only marshal MSGs in wow64_NtUserCallWindowsHook if needed. Zebediah Figura (18): qcap/audiorecord: Implement DecideBufferSize(). qcap/tests: Add tests for audio capture pin connection. qcap/tests: Test audio capture allocator properties. qcap/audiorecord: Open a winmm device when connecting. qcap/audiorecord: Implement streaming. qcap/tests: Test audio capture streaming. user32/tests: Do not dump the message sequence when a todo succeeds on Windows. user32/tests: Do not stop checking the message list when skipping an optional or unsupported message. qcap/audiorecord: Implement IAMStreamConfig::SetFormat() and IAMStreamConfig::GetFormat(). qcap/audiorecord: Stub IKsPropertySet. qcap/audiorecord: Implement IKsPropertySet::Get(&ROPSETID_Pin, AMPROPERTY_PIN_CATEGORY). qcap/audiorecord: Stub IAMBufferNegotiation. qcap/audiorecord: Implement IAMBufferNegotiation::SuggestAllocatorProperties(). qcap/tests: Remove duplicated tests for allocator identity. mmdevapi/tests: Remove some unnecessary workarounds. mmdevapi/tests: Run property store tests for all devices. mmdevapi/tests: Add some tests for PKEY_AudioEngine_DeviceFormat. xactengine: Use the xaudio2 channel. Zhiyi Zhang (1): d2d1/tests: Add some IsSupported() tests for HWND target. Ziqing Hui (7): mfreadwrite/tests: Add tests for MP4 sink writer. mf/tests: Test GetInputStatus for WMV decoder DMO. mf/tests: Test Discontinuity for WMV decoder DMO. mf/tests: Test Flush for WMV decoder DMO. winegstreamer: Implement GetInputStatus for WMV decoder DMO. winegstreamer: Implement Discontinuity for WMV decoder DMO. mf/tests: Add tests for MPEG4 media sink.