The Wine development release 9.18 is now available. What's new in this release: - New Media Foundation backend using FFMpeg. - Initial support for network sessions in DirectPlay. - New Desktop Control Panel applet. - Various bug fixes. The source is available at <https://dl.winehq.org/wine/source/9.x/wine-9.18.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.18/AUTHORS ---------------------------------------------------------------- ### Bugs fixed in 9.18 (total 18): - #10648 gRPC library fails to send RPC packets correctly (nonblocking send() should not perform partial writes) - #53727 TreeView doesn't check the return value of TREEVIEW_SendExpanding - #55347 widl generated winrt headers fails to compile with C++ code - #56596 Keyboard keypress generates NumLock keypress for all keys - #56873 WordSmith 9.0 doesn't show text in installer - #57136 Steinberg Download Assistant crashes (part 2) - #57141 Repaper Studio crashes on unimplemented function USER32.dll.CreateSyntheticPointerDevice - #57155 Gigapixel ai crashes on startup in win7 mode - #57158 HID devices not detected after removal until Wine processes restart - #57160 16-bit color no longer works when using Xephyr - #57163 msiexec sometimes fails with unquoted filenames - #57173 Wine-dev 9.17 does not allow drag-and-drop of files into LTspice - #57181 PathGradientBrushTest:Clone fails with InvalidParameter - #57189 Caesar 3, Neighbours from Hell 1-2: screen cropped - #57190 Configure ends with: Do '' to compile Wine. - #57195 wineconsole is broken Wine 9.17 after moving its window (Far File Manager is broken as well, as a result) - #57199 Window surface leaks with DPI unaware apps - #57200 Warlords III: Darklords Rising shows distorted image ### Changes since 9.17: ``` Aida Jonikienė (1): winewayland: Make the pointer protocols optional. Alexandre Julliard (47): combase: Avoid modifying input object attributes in create_key (Clang). ole32: Avoid modifying input object attributes in create_key (Clang). odbc32: Avoid buffer overflow on empty connection string (Clang). ntdll: Remove some dead initializations (Clang). configure: Re-generate with autoconf 2.72. configure: Disable misguided autoconf error on wow64 builds without large time_t. configure: Use the compiler instead of the preprocessor to check CPU defines. configure: Remove some no longer used defines. server: Add a helper to append data to a buffer. server: Remove some dead initializations (Clang). server: Avoid a redundant list check (Clang). server: Avoid memcpy with null pointer (Clang). server: Make masks unsigned (Clang). mf/tests: Remove todo_wine from a test that succeeds now. ntoskrnl/tests: Mark some failing tests as todo_wine. comctl32/tests: Skip hotkey test if window is not foreground. comctl32/tests: Wait a bit more for the tooltip to appear. d3dx9: Use sizeof on the correct type in malloc (Clang). dsound: Use sizeof on the correct type in malloc (Clang). gdiplus: Use sizeof on the correct type in malloc (Clang). hidclass.sys: Use sizeof on the correct type in malloc (Clang). msi: Use sizeof on the correct type in malloc (Clang). msvcrt: Use sizeof on the correct type in malloc (Clang). wintrust: Use sizeof on the correct type in malloc (Clang). win32u: Use the correct type in malloc (Clang). mscoree: Use the correct size in malloc (Clang). winex11: Use the correct type in malloc (Clang). winecfg: Use the correct type in malloc (Clang). comctl32/tests: Skip tests if tooltip isn't displayed. comctl32/tests: Make some messages optional in propsheet display sequence. urlmon/tests: Skip test if ftp connection fails. ntdll: Avoid closing an invalid handle (Clang). regedit: Fix potential buffer overflow (Clang). oleaut32: Fix potential double free (Clang). msvcrt: Mark _CxxThrowException noreturn (Clang). configure: Update make command in final message. configure: Add /usr/share/pkgconfig to the pkg-config path. comctl32/tests: Add more optional propsheet messages. nsi/tests: Properly cancel all change notifications. comctl32/tests: Fix an optional propsheet message id. cmd/tests: Comment out test that shows a popup on Windows. po: Update files for previous commit. sc/tests: Remove todo from a test that succeeds now. ntdll/tests: Remove an unreliable test. configure: Remove some obsolete checks. configure: Remove some no longer needed program checks. configure: Remove some no longer needed header checks. Alexey Lushnikov (1): gdi32: Actually return the device context and bitmap from get_bitmap_info(). Alistair Leslie-Hughes (3): dplayx: Merged IDirectPlayLobby/2A in to IDirectPlayLobby3A. dplayx: Use a single reference count for IDirectPlayLobby interfaces. dplayx: Merged IDirectPlayLobby/2 in to IDirectPlayLobby3. Anton Baskanov (26): dpwsockx: Remove endianness conversion macros. dpwsockx: Remove unused DPWS_DATA fields. dplayx: Don't crash if sdesc is NULL in EnumSessions(). dplayx/tests: Use CRT allocation functions. dplayx/tests: Test client-side of EnumSessions() separately. dplayx: Check dwSize of DPSESSIONDESC2 in EnumSessions(). dpwsockx: Call WSACleanup() in ShutdownEx(). dpwsockx: Start listening for incoming TCP connections in EnumSessions(). dpwsockx: Broadcast enumeration request in EnumSessions(). dplayx/tests: Report lines correctly in session enumeration callback. dplayx/tests: Retry enumeration manually instead of returning TRUE from the callback. dpwsockx: Add a background thread. dpwsockx: Accept incoming TCP connections. dpwsockx: Receive TCP messages. dplayx: Add a separate session list for walking. dplayx: Put the sync enumeration code before the async one. dplayx: Move enumeration reset and prune out of DP_InvokeEnumSessionCallbacks(). dplayx: Enter critical section when accessing the session cache. dplayx: Restart session enumeration when the callback returns TRUE. dplayx: Respect timeout set by session enumeration callback. dplayx: Add a string copying helper function and use it in DP_CalcSessionDescSize() and DP_CopySessionDesc(). dplayx: Reduce nesting of the async enumeration code. dplayx: Send password in session enumeration request. dplayx/tests: Correctly compute session enumeration reply size. dplayx: Check the message size before access. dplayx: Check ENUMSESSIONSREPLY size before access. Aurimas Fišeras (1): po: Update Lithuanian translation. Biswapriyo Nath (3): include: Add Calendar runtimeclass in windows.globalization.idl. include: Add DXVA_PicParams_HEVC_RangeExt declaration in dxva.h. include: Add new GUIDs in dxva.h. Brendan Shanks (8): winemac: Marshal user-mode callback pointers in macdrv_init wow64 thunk. Revert "configure: Don't define HAVE_CLOCK_GETTIME on macOS.". ntdll: Always use mach_continuous_time() on macOS. sfnt2fon: Replace sprintf with snprintf to avoid deprecation warnings on macOS. widl: Replace sprintf with snprintf to avoid deprecation warnings on macOS. winebuild: Replace sprintf with snprintf to avoid deprecation warnings on macOS. wmc: Replace sprintf with snprintf to avoid deprecation warnings on macOS. wrc: Replace sprintf with snprintf to avoid deprecation warnings on macOS. Charlotte Pabst (2): comdlg32: Allow entering a filter in the itemdlg file name field. comdlg32/tests: Add tests for itemdlg file name field filters. Danyil Blyschak (1): mlang: Use EnumFontFamiliesEx() in map_font(). Dmitry Timoshkov (4): msiexec: Avoid crash if PackageName is NULL. advapi32/tests: Add some tests for SERVICE_CONFIG_DELAYED_AUTO_START_INFO. services: Add support for ChangeServiceConfig2(SERVICE_CONFIG_DELAYED_AUTO_START_INFO). services: Add support for QueryServiceConfig2(SERVICE_CONFIG_DELAYED_AUTO_START_INFO). Elizabeth Figura (14): wined3d: Invalidate the VS from wined3d_device_apply_stateblock() when light state changes. wined3d: Invalidate the VS from wined3d_device_apply_stateblock() when the light type changes. wined3d: Invalidate the VS from wined3d_device_apply_stateblock() when the vertex declaration changes. wined3d: Invalidate the VS from wined3d_device_apply_stateblock() when WINED3D_TSS_TEXCOORD_INDEX changes. wined3d: Add an append_structure() helper for get_physical_device_info(). wined3d: Don't use structures from unsupported extensions in get_physical_device_info(). wined3d: Do not require EXT_vertex_attribute_divisor. winevulkan: Separate a parse_array_len() helper. winevulkan: Handle multidimensional static arrays. wined3d: Use W as a fog source with shaders and a non-orthogonal matrix. wined3d: Use output specular W as a fog source if the shader does not output oFog. wined3d: Invalidate STATE_SHADER when WINED3D_TS_PROJECTION changes. wined3d: Invalidate the VS from wined3d_device_apply_stateblock() when fog states change. wined3d: Invalidate the VS from wined3d_device_apply_stateblock() when WINED3D_RS_VERTEXBLEND changes. Eric Pouech (10): cmd/tests: Add some more tests. cmd: Expand command before searching for builtin commands. cmd: Introduce internal command to change drive. cmd: Introduce helper to search for external program. cmd: Introduce helper for running a builtin command. cmd: Integrate builtin command search in search_program() helper. cmd: Speed-up external command look up. cmd: Get rid of circular ref for internal/external commands. winedbg: Give user feedback when attaching to a second process. dbghelp: Fix discrimination of local variable / parameter in PDB files. Esme Povirk (3): msiexec: Fix allocation to include NULL terminator. user32: Implement listbox MSAA events on click. gdiplus: Fix assignment of result in GdipCloneBrush. Francisco Casas (3): quartz: Emit FIXME when the rendering surface is smaller than the source in VMR7. quartz: Properly copy data to render surfaces of planar formats in VMR7. quartz: Align src_pitch for planar formats. Gabriel Ivăncescu (13): mshtml: Don't cast to int to bound the timer. mshtml: Remember if timer was blocked. mshtml: Don't process tasks recursively. mshtml: Don't process tasks recursively from script runners. mshtml: Don't process tasks recursively from Gecko events. mshtml: Use designated initializers for function_dispex. mshtml: Move formatting of the builtin func disp string to a helper. mshtml: Implement retrieving the builtin method props for the legacy function objects. jscript: Use proper dispatch flags to retrieve the enumerator. jscript: Use deferred fill-in if available to fill the exception info. mshtml/tests: Add more host object related tests for IE9+ modes. mshtml: Return MSHTML_E_INVALID_PROPERTY when trying to construct a legacy function object. jscript: Return JS_E_OBJECT_NOT_COLLECTION when object has no DISPID_NEWENUM. Gijs Vermeulen (1): user32: Add CreateSyntheticPointerDevice stub. Hans Leidekker (1): odbc32: Only call process_detach() if the unixlib was successfully loaded. Jacek Caban (7): include: Define __imp_aux symbols in __ASM_DEFINE_IMPORT macro on ARM64EC. widl: Use alias qualified names in winrt mode in write_type_left. tools: Use GetModuleFileNameA in get_bindir on Windows targets. tools: Use /proc/self/exe in get_bindir on Cygwin targets. include: Use __has_declspec_attribute in corecrt.h. include: Remove DECLSPEC_ALIGN define from sys/stat.h. include: Use __has_declspec_attribute in basetsd.h. Louis Lenders (1): uxtheme: Add stub for FlushMenuThemes. Michael Ehrenreich (2): kernelbase: Fix EnumSystemLocalesA/W filtering of default/alternate sort orders. kernel32/tests: Add basic tests for EnumSystemLocalesA/W. Nikolay Sivov (1): d2d1/tests: Add a few tests for ComputeArea(). Owen Rudge (2): sc: Return error value rather than 1 on failure. ntdll: Ensure Unix path strings are wrapped with debugstr_a in traces. Paul Gofman (6): ntdll: Do not call LDR notifications during process shutdown. ws2_32/Tests: Add tests for send buffering. ntdll: Avoid short writes on nonblocking sockets. ntdll: Locally duplicated socket fd for background send. ntdll: Don't cancel background socket sends. server: Correct STATUS_NOT_FOUND return from (cancel_async). Rémi Bernon (112): winex11: Resize offscreen client surfaces after they are presented. winex11: Create OpenGL client windows in window DPI units. winex11: Detach offscreen OpenGL windows after creation. winex11: Introduce a new present_gl_drawable helper. winex11: Implement offscreen window presents with NtGdiStretchBlt. winex11: Drop now unnecessary X11DRV_FLUSH_GL_DRAWABLE ExtEscape. winex11: Use offscreen rendering to scale DPI-unaware GL windows. winedmo: Introduce a new internal DLL. winedmo: Link and initialize FFmpeg on load. winedmo: Export a new winedmo_demuxer_check function. mfsrcsnk: Stub byte stream handlers if demuxing is supported. winewayland: Move wayland_surface_get_client to window.c. winewayland: Introduce a new wayland_client_surface_attach helper. winewayland: Pass hwnd to and return client rect from wayland_surface_get_client. winewayland: Move client surface to wayland_win_data struct. winewayland: Detach client surfaces when they are not visible. mfsrcsnk: Stub the source IMFByteStreamHandler interface. mfsrcsnk: Stub the media source IMFMediaSource interface. mfsrcsnk: Implement IMFMediaSource_Shutdown for the media sources. mfsrcsnk: Implement IMFMediaSource_GetCharacteristics for the media sources. mfsrcsnk: Stub the media source IMFGetService interface. mfsrcsnk: Stub the media source IMFRateSupport interface. mfsrcsnk: Stub the media source IMFRateControl interface. winex11: Use the correct dnd_drop_event user dispatch callback. win32u: Leave window surface alpha bits to -1 when unset. hidclass: Combine waits for pending IRP and I/O thread shutdown. mfsrcsnk: Get the IMFByteStream url from MF_BYTESTREAM_ORIGIN_NAME. mfsrcsnk: Seek and get the media source IMFByteStream length. winedmo: Export new winedmo_demuxer_(create|destroy) functions. mfsrcsnk: Create a winedmo_demuxer object on the media sources. winedmo: Implement FFmpeg seek and read with user callbacks. winedmo: Allocate a client-side stream context with the demuxers. winedmo: Use the stream context to track stream position. winedmo: Use the stream context as a buffer for larger reads. winedmo: Introduce a winedmo_stream callback interface for I/O. winedmo: Return detected MIME type from winedmo_demuxer_create. winedmo: Improve MIME type detection with the stream url. winedmo: Detect and return stream count from winedmo_demuxer_create. winedmo: Compute and return total duration from winedmo_demuxer_create. winedmo: Export a new winedmo_demuxer_stream_type function. mfsrcsnk: Initialize a stream map, sorted for specific mime types. winevulkan: Use client rect in window DPI instead of monitor DPI. win32u: Pass vulkan driver private data to vulkan_surface_presented. winex11: Use a dedicated structure for vulkan surface private data. winex11: Update the vulkan surface size when it is presented. winex11: Update the GL client window size when it is presented. winex11: Only update the client window position in sync_client_position. winex11: Move offscreen client window helpers to init.c. winex11: Implement vulkan DPI scaling and child window rendering. winedmo: Pass stream size by value to winedmo_demuxer_create. winedmo: Implement video media type conversion. winedmo: Implement audio media type conversion. mfsrcsnk: Stub IMFMediaStream objects for the media source. mfsrcsnk: Create stream descriptors for the media source streams. winedmo: Implement more compressed audio/video formats conversion. conhost: Advertise system DPI awareness. win32u: Lock the window when removing a vulkan surface from its list. winex11: Move update_gl_drawable_size helper around. winex11: Resize GL drawable when necessary, if wglSwapBuffer isn't called. include: Introduce a new __has_declspec_attribute macro. include: Use winnt.h DECLSPEC_UUID definition in rpcndr.h. include: Use winnt.h DECLSPEC_NOVTABLE definition in rpcndr.h. include: Add DECLSPEC_UUID/DECLSPEC_NOVTABLE to MIDL_INTERFACE. include: Remove __need_wint_t/__need_wchar_t definitions. include: Don't import atexit from CRTs. include: Define __cpuid(ex) as intrinsics when possible. win32u: Avoid leaking window surface references with DPI scaling. winedmo: Fix winedmo_demuxer_create prototype in spec file. winedmo: Export a new winedmo_demuxer_stream_name function. mfsrcsnk: Fill the stream descriptors MF_SD_STREAM_NAME attribute. winedmo: Export a new winedmo_demuxer_stream_lang function. mfsrcsnk: Fill the stream descriptors MF_SD_LANGUAGE attribute. mfsrcsnk: Select one stream of each time, exclude others. win32u: Use map_dpi_rect in map_dpi_create_struct. win32u: Use map_dpi_rect in map_dpi_winpos. win32u: Split monitor_from_rect logic to a separate helper. win32u: Split get_monitor_info into separate helpers. win32u: Use get_monitor_from_handle in get_monitor_dpi. win32u: Introduce a new monitor_dpi_from_rect helper. win32u: Introduce a new monitor_info_from_rect helper. win32u: Introduce a new monitor_info_from_window helper. joy.cpl: Refresh devices list when they are plugged in or out. joy.cpl: Cleanup the main panel control IDs and text. joy.cpl: Reduce the height of some main panel controls. joy.cpl: Add advanced settings controls in the main panel. win32u: Fix inverted return condition in get_cursor_pos. winex11: Also resize or re-create the GL drawable with XComposite child windows. mfsrcsnk: Implement asynchronous media source start operation. mfsrcsnk: Implement asynchronous media source stop operation. mfsrcsnk: Implement asynchronous media source pause operation. winedmo: Export a new winedmo_demuxer_seek function. winedmo: Export a new winedmo_demuxer_read function. winedmo: Read sample flags, timestamps and duration. mfsrcsnk: Read samples from the media source demuxer. include: Define NULL as 0LL in C++ on 64bit archs. win32u: Use get_virtual_screen_rect directly within the module. win32u: Use is_window_rect_fullscreen directly in clip_fullscreen_window. win32u: Use get_window_rect directly in clip_fullscreen_window. win32u: Pass whether a window is fullscreen to drivers WindowPosChanged. winewayland: Use the new fullscreen flag instead of NtUserIsWindowRectFullScreen. winex11: Use the new fullscreen flag instead of NtUserIsWindowRectFullScreen. win32u: Remove now unused NtUserIsWindowRectFullScreen call. desk.cpl: Introduce new control panel applet. desk.cpl: Enumerate the desktop display devices. desk.cpl: Display the virtual desktop and monitors rects. desk.cpl: Implement monitor highlight and selection. desk.cpl: Enumerate and display available resolutions. desk.cpl: Add a reset button to discard display settings changes. desk.cpl: Update the monitor rects when changing resolutions. desk.cpl: Keep the monitor rectangles snapped together. desk.cpl: Implement monitor rectangle positioning. desk.cpl: Add a button to apply display settings changes. Stefan Dösinger (1): netapi32: Add a stub NetFreeAadJoinInformation function. ```