Wine Announcement

The Wine development release 7.16 is now available.

What's new in this release:
  - Wow64 support in X11 driver.
  - Session storage in MSHTML.
  - Unicode regexp fixes in MSXML.
  - IME improvements in Edit control.
  - Various bug fixes.

The source is available at:

Binary packages for various distributions will be available from:

You will find documentation on

You can also get the current source directly from the git
repository. Check 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.16 (total 20):

 - #29685  Manifest generator (ecmangen) tool from Windows Platform SDK 7.1 crashes due to unhandled facet/regular expression in XML schema (escape sequence)
 - #42857  Can't select a fixture in FreeStyler's fixture editor
 - #43581  Microsoft Office 365 edition of Office 2013 installer fails with 'cache_entry_from_xsd_doc failed to parse doc' (non-standard '\u####' sequence)
 - #46083  postgresql: "Unable to write inside TEMP environment variable path"
 - #51601  Metal Gear Solid V: The Phantom Pain stucks on first chapter intro
 - #52329  amazon games app crashes in wine 7.0 rc-3 (winsock?)
 - #52657  Watch Dogs crashes on start
 - #53174  StarCitizen launcher freeze due to heap space issue
 - #53424  Scroll bar not working. was with up to 7.12?
 - #53462  Obduction audio and subtitles for videos don't work
 - #53468  Ragnarok Online's anti-cheat, Gepard, detecting macro usage (false-positive)
 - #53472  Kerberos auth broken since 7.10
 - #53497  d3d8:device & d3d8:device - test_resource_access() crashes in Wine
 - #53542  Hog4PC 3.17 installer VBScript custom action needs IWshShell::Run to return signed type.
 - #53545  Visual Novel Doukyuusei sound loop
 - #53565  postgresql installer 9.3 needs support for default style argument in WshShell.Run
 - #53566  Wine uninstaller fails to launch
 - #53569  postgresql installer 9.3 needs correct string length returned from fso.GetTempName
 - #53587  comctl32 GetWindowSubclass crash in Notepad++ (v8.4.3 and 8.4.4 only)
 - #53589  Saints Row (2022) crashes on unimplemented function kernel32.dll.SetProcessDefaultCpuSets


Changes since 7.15:

Akihiro Sagawa (7):
      mciqtz32: Don't stretch video destination for a popup or child window.
      winmm/tests: Add MCI_DGV_WINDOW_STATE tests.
      mciqtz32: Fix MCI_DGV_WINDOW_STATE behavior.
      winmm/tests: Add MCI_DGV_WINDOW_TEXT tests.
      mciqtz32: Fix MCI_DGV_WINDOW_TEXT behavior.
      winmm/tests: Add more MCI_DGV_WINDOW_HWND tests.
      mciqtz32: Fix MCI_DGV_WINDOW_HWND error handling.

Alexandre Julliard (9):
      winetest: Use CRT allocation functions.
      winetest: Support loading the list of tests from a file.
      winetest: Disable the crash dialog in non-interactive mode.
      winetest: Exit with error 3 when there are test failures.
      mountmgr: Don't crash if connecting to dbus fails.
      xslt: Import upstream release 1.1.36.
      xml2: Import upstream release 2.10.0.
      comctl32/tests: Use client coordinates for right click test.
      gitlab: Add macOS build.

Alistair Leslie-Hughes (2):
      dsdmo: Add Echo FX Support.
      dsdmo: Add Compressor FX Support.

André Zwing (1):
      wow64: Fix the ARM32 machine type.

Aurimas Fišeras (1):
      po: Update Lithuanian translation.

Brendan Shanks (2):
      shell32/tests: Test ExtractIcon() with an empty/invalid path.
      shell32: Return NULL from ExtractIcon() for all error cases.

Davide Beatrici (18):
      winealsa: Drop "alsa_" prefix in unixlib enum, apply it to the functions instead.
      winealsa: Move common unixlib.h content into mmdevapi.
      mmdevapi: Integrate winepulse's additions in unixlib.h.
      winealsa: Fix WoW64 failure when calling get_position().
      mmdevapi/tests: Fix fail messages referencing GetChannelCount() instead of GetChannelVolume().
      mmdevapi/tests: Distinguish GetChannelCount() calls in test_volume_dependence() fail messages.
      mmdevapi/tests: Fix typos in spatial audio fail messages.
      mmdevapi/tests: Fix fail message referencing "Start" instead of "Stop" in test_session().
      winepulse: Adapt "endpoint" struct to mmdevapi's.
      winepulse: Adapt "create_stream_params" struct to mmdevapi's.
      winepulse: Adapt "release_stream_params" struct to mmdevapi's.
      winepulse: Adapt "release_render_buffer_params" struct to mmdevapi's.
      winepulse: Adapt "get_capture_buffer_params" struct to mmdevapi's.
      winepulse: Adapt "get_mix_format_params" struct to mmdevapi's.
      winepulse: Adapt "get_device_period_params" struct to mmdevapi's.
      winepulse: Adapt "is_started_params" struct to mmdevapi's.
      winepulse: Adapt "get_prop_value_params" struct to mmdevapi's.
      winepulse: Switch to mmdevapi's unixlib.h.

Etaash Mathamsetty (2):
      ntoskrnl.exe: Implement KeAreAllApcsDisabled.
      ntoskrnl: Implement IoCreateFileEx.

Floris Renaud (1):
      po: Update Dutch translation.

Gabriel Ivăncescu (16):
      jscript: Implement fdexNameCaseInsensitive flag handling.
      mshtml: Handle S_FALSE from IUri methods in localStorage and sessionStorage.
      mshtml: Handle S_FALSE from IUri methods in Anchor Elements.
      mshtml: Handle S_FALSE from IUri methods when checking targetOrigin.
      mshtml: Don't navigate if GetDisplayUri failed.
      mshtml: Handle S_FALSE from IUri methods when navigating.
      mshtml: Handle S_FALSE from IUri methods in the NSAPI interfaces.
      mshtml: Handle S_FALSE return values from IUri methods.
      mshtml: Implement setItem() for sessionStorage.
      mshtml: Implement getItem() for sessionStorage.
      mshtml: Implement removeItem() for sessionStorage.
      mshtml: Implement clear() for Storage.
      mshtml: Implement key() for sessionStorage.
      mshtml: Implement key() for localStorage.
      mshtml: Implement length prop for Storage.
      mshtml: Implement remainingSpace prop for sessionStorage.

Gijs Vermeulen (1):
      kernel32: Add SetProcessDefaultCpuSets stub.

Hans Leidekker (3):
      hnetcfg: Add INetFwRule stub.
      hnetcfg: Return success from netfw_rules_Add() and netfw_rules_Remove().
      bcrypt: Support ECDH_P384 key import/export.

Henri Verbeet (1):
      mfreadwrite/reader: Only attempt to copy sample buffers from responses with non-NULL samples.

Huw D. M. Davies (2):
      maintainers: Remove advice about Cc'ing patches.
      wow64: Fix another ARM32 machine type.

Jacek Caban (39):
      win32u: Move more logic from dispatch_win_proc_params.
      win32u: Use a separate helper to send messages from win32u.
      win32u: Pack messages sent directly from win32u.
      user32: Pass window name as UNICODE_STRING to NtUserCreateWindowEx.
      win32u: Use send_message_timeout for WM_CREATE and WM_NCCREATE.
      win32u: Remove no longer needed unicode call_hooks argument.
      wow64win: Implement wow64_NtUserCallWinProc.
      wow64win: Implement wow64_NtUserMessageCall.
      user32: Always use original parameter values in dispatch_send_message.
      win32u: Use a client copy of windows hook lparam when calling hook procs.
      wow64win: Implement NtUserCallWindowsHook thunk.
      wow64win: Implement more user callbacks.
      wow64win: Fix NtUserGetMouseMovePointsEx thunk.
      wow64win: Return class atom from NtUserGetClassInfoEx thunk.
      wow64win: Fix NtUserGetClipboardData thunk.
      wow64win: Fix returning strings in NtUserGetIconInfo thunk.
      wow64win: Fix NtUserGetMenuBarInfo thunk.
      wow64win: Fix handling NULL input32 in NtUserSendInput.
      wow64win: Support GCLP_MENUNAME in NtUserSetClassLongPtr thunk.
      wow64win: Fix NtUserThunkedMenuItemInfo thunk.
      wow64win: Fix output handling in NtUserTrackMouseEvent thunk.
      wow64win: Use in-place conversion in NtUserDrawText thunk.
      wow64win: Use LongToHandle for user handles conversion.
      user32: Move dialog proc getting implementation from win32u.
      user32: Move dialog proc setting implementation from win32u.
      win32u: Fix handling uninitialized process_layout.
      wow64win: Fix NtGdiDdDDICreateDevice thunk.
      win32u: Move process initialization to NtUserInitializeClientPfnArrays.
      winex11: Implement wow64 thunks.
      user32: Support resource ID strings in CREATESTRUCT Unicode conversion.
      user32: Support passing bitmap and icon resource ID as a string when creating static control.
      user32: Pass resource ID as a string in DIALOG_CreateControls32.
      user32: Remove no longer used DPI functions.
      win32u: Move NtUserLogicalToPerMonitorDPIPhysicalPoint implementation from user32.
      win32u: Move NtUserPerMonitorDPIPhysicalToLogicalPoint implementation from user32.
      win32u: Introduce NtUserActivateOtherWindow.
      user32: Remove no longer user get_hwnd_message_parent.
      user32: Merge win.h into user_private.h.
      user32: Build with nameless structs and unions.

Jakub Staroń (1):
      ntdll: Implement RtlRestoreContext on i386.

Jiajin Cui (2):
      win32u: Ensure that either the primary or secondary name is in English.
      win32u: Don't allow a replaced font to be a replacement.

Jinoh Kang (3):
      server: Use POLLIN instead of POLLPRI if the socket is in oobinline mode.
      server: Use check_fd_events() instead of calling poll() directly.
      server: Always prefer synchronous I/O in nonblocking mode.

Konstantin Romanov (1):
      kerberos: Fix condition for create_context_handle in kerberos_SpInitLsaModeContext and kerberos_SpAcceptLsaModeContext.

Loïc Rebmeister (1):
      wintypes: Add RoResolveNamespace stub.

Martin Storsjö (3):
      configure: Downgrade -Wincompatible-function-pointer-types to a warning on ARM.
      vkd3d: Fix the signature of vkd3d_spirv_build_op_type_image.
      bcrypt: Fix the non-PE build after ECDH_P384 was added.

Matteo Bruni (1):
      wined3d: Introduce WINED3DUSAGE_MANAGED.

Nikolay Sivov (27):
      mfplat: Implement Write() for file streams.
      mfsrcsnk: Add a stub dll.
      mfsrcsnk/wave: Add a sink stub.
      mfsrcsnk/wave: Add clock state callbacks.
      mfsrcsnk/wave: Store media format structure.
      mfsrcsnk/wave: Implement sample processing.
      mfsrcsnk: Add WAVE sink class factory.
      mfsrcsnk/wave: Add a type handler stub.
      mfreadwrite/writer: Make sure output pointer is initialized.
      mfreadwrite/writer: Implement AddStream().
      mfreadwrite/writer: Partially implement BeginWriting().
      mfreadwrite/writer: Start presentation clock on BeginWrite().
      mfreadwrite/writer: Implement GetServiceForStream().
      mfreadwrite/writer: Notify encoder on BeginWriting().
      mfreadwrite/writer: Update some stats counters on WriteSample().
      mfreadwrite/writer: Update some stats on MEStreamSinkRequestSample.
      mfreadwrite/writer: Add sample/marker queue for each stream.
      mfreadwrite/writer: Reference user callback.
      mfreadwrite/writer: Implement PlaceMarker().
      mfreadwrite/writer: Implement Flush().
      evr: Add IMFGetService stub.
      evr: Add IMFVideoRenderer stub to the filter.
      evr: Implement lazy initialization with mixer and presenter instances.
      evr/tests: Add a test to show that IMFVideoDisplayControl is accessible.
      mfplat/tests: Add some tests for legacy media type conersion functions.
      mfplat: Partially implement MFInitMediaTypeFromVideoInfoHeader().
      mfplat: Partially implement MFInitMediaTypeFromAMMediaType().

Paul Gofman (3):
      ddraw/tests: Add more tests for restoring complex surfaces.
      ddraw: Restore full complex attachment chain in ddraw_surface7_Restore().
      winex11.drv: Set correct cursor when setting cursor from another thread.

Piotr Caban (9):
      msvcp60: Use 'MultiByteToWideChar' in __Fiopen implementation.
      msvcp90: Use 'MultiByteToWideChar' in _Fiopen implementation.
      winspool.drv: Ignore device name if printer handle is passed in DocumentProperties.
      winspool.drv: Fix get_config_module when printer and driver names differ.
      include: Update ddk/compstui.h header.
      compstui: Add partial CommonPropertySheetUIW implementation.
      compstui: Add CommonPropertySheetUI tests.
      msvcp71: Use MultiByteToWideChar in _Fiopen implementation.
      msvcr100: Set scheduler in tasks created with ScheduleTask function.

Robert Wilhelm (8):
      wshom: Use signed type for property ProcessID in IWshExec.
      wshom: Use signed type for property ExitCode in IWshExec.
      wshom: Add test for default style arg in WshShell3_Run.
      wshom: Support default style argument in IWshShell3::Run.
      scrrun: Add test for correct string length returned from GetTempName.
      scrrun: Correct string length returned from GetTempName.
      scrrun: Avoid memory leak in error case.
      scrrun: Added DateCreated property for IFile.

Rémi Bernon (22):
      mf/tests: Add some topology loader tests with missing output type.
      mf/tests: Add some MP3 decoder transform tests.
      mf/tests: Add more topology loader converter and enumeration tests.
      mf: Allow resolving topology with missing downstream current type.
      mf: Only allow converter connection if decoder didn't accept down type.
      mf: Only enumerate types for decoders / converter if down type is missing.
      qasf: Implement IWMReaderCallbackAdvanced stub interface.
      qasf: Implement ASF Reader filter buffer allocation.
      qasf: Implement ASF Reader filter IWMReaderCallback_OnSample.
      qasf: Implement ASF Reader SourceSeeking stubs.
      qasf: Register ASF Reader filter media type.
      win32u: Do not keep display modes driver extra in the registry.
      win32u: Read registry or current mode when validation needs it.
      win32u: Always copy devmode in validate_display_settings.
      win32u: Use current mode position if desired mode doesn't specify it.
      win32u: Only read/write valid mode fields from/to the registry.
      mf/tests: Avoid creating now unused sink activate instances.
      mf/tests: Try returning MF_E_NOT_INITIALIZED from GetCurrentMediaType.
      mf: Support uninitialized downstream media types in topology loader.
      maintainers: Add myself to multimedia sections.
      qasf/tests: Test ASF Reader filter initial state and pins.
      qasf/tests: Test ASF Reader filter threading wrt. ReceiveCanBlock.

Santino Mazza (1):
      bcrypt: Move symmetric flags check to symmetric section.

Torge Matthies (2):
      msvcr100: Factor out the mapping of a context to a scheduler.
      msvcr100: Implement _StructuredTaskCollection::_Schedule and _Schedule_loc.

Zebediah Figura (13):
      wined3d: Use wined3d_array_reserve() in wined3d_adapter_create_output().
      d3d8/tests: Expand tests for valid pools in UpdateTexture().
      d3d9/tests: Expand tests for valid pools in UpdateTexture().
      d3d8/tests: Read back directly from the specified surface if possible.
      d3d8/tests: Add more tests for dirty rect handling.
      d3d9/tests: Add more tests for dirty rect handling.
      d3d11/tests: Use winetest_push_context() to print explicit feature levels.
      d3d11: Always return E_FAIL for formats which have no support flags.
      d3d11: Implement D3D11_FEATURE_FORMAT_SUPPORT.
      d3d8/tests: Add tests for D3DLOCK_NO_DIRTY_UPDATE with vertex buffers.
      d3d9/tests: Add tests for D3DLOCK_NO_DIRTY_UPDATE with vertex buffers.
      d3d8: Introduce a wined3d_usage_from_d3d() helper.
      d3d9: Introduce a wined3d_usage_from_d3d() helper.

Zhiyi Zhang (24):
      comctl32/tests: Add GetWindowSubclass() tests.
      comctl32: Check reference data pointer before using it.
      comctl32: Set reference data to zero on failure for GetWindowSubclass().
      comctl32/tests: Add IME tests for edit control.
      comctl32/edit: Implement EM_SETIMESTATUS.
      comctl32/edit: Implement EM_GETIMESTATUS.
      comctl32/edit: Let DefWindowProcW() handle WM_IME_CHAR.
      comctl32/edit: Handle IME composition result string only when EIMES_GETCOMPSTRATONCE is set.
      user32/tests: Link directly to imm32.
      user32/tests: Add IME tests for edit control.
      user32/edit: Implement EM_SETIMESTATUS.
      user32/edit: Implement EM_GETIMESTATUS.
      user32/edit: Let DefWindowProcA/W() handle WM_IME_CHAR.
      user32/edit: Handle IME composition result string only when EIMES_GETCOMPSTRATONCE is set.
      comctl32/tests: Test that changing focus for edit controls doesn't repaint immediately.
      comctl32/edit: Don't repaint immediately when getting focus.
      comctl32/edit: Don't repaint immediately when losing focus.
      gdi32/tests: Add more tests for GetTextMetrics().
      win32u: Choose a smaller ppem to avoid exceeding the requested font height.
      ddraw/tests: Add a comment to note that tests in d3d.c are deprecated.
      ddraw/tests: Move the capability tests for enumerated devices.
      ddraw/tests: Add more capability tests for enumerated devices.
      ddraw: Don't report unsupported device capabilities in d3d7_EnumDevices().
      ddraw: Don't report unsupported device capabilities in d3d3_EnumDevices().