Wine Announcement

The Wine development release 7.15 is now available.

What's new in this release:
  - Command lists in Direct2D.
  - RSA encryption.
  - Initial Wow64 thunking in WIN32U.
  - Optional support for colors in test output.
  - 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.15 (total 22):

 - #40444  Find doesn't jump to a found item in WinSCP when editing a file
 - #47057  Call of Cthulhu fails to completely load levels and trigger cutscenes
 - #49461  Gridrunner Revolution: sound effects stop working after a while
 - #49678  Lost Chronicles of Zerzura hangs on startup
 - #49692  Multiple applications need a Media Foundation media source implementation
 - #50131  Remothered: Tormented Fathers crashes on video loading
 - #50546  Persona 4 Golden requires notification message XACTNOTIFICATIONTYPE_WAVEBANKPREPARED to play sounds.
 - #50593  Sforzando Sample Player don't draw text, needs font fallback support
 - #52448  Multiple visual novels display videos inside separate ActiveMovie window (Hoshi Ori Yume Mirai)
 - #52534  ListView: multi select never sends LVN_ODSTATECHANGED
 - #52601  The Settlers V: crashes when starting
 - #52610  Memory corruption in PE build, when using FIXME in krnl386.exe __wine_vxd_open() function
 - #52933 The IAsyncInfo_Close() tests fail on Windows
 - #52957  Invisible pop-ups text in SeaMonkey 2.53.12
 - #53123  ListView: Ctrl+Shift+LMouse multiselect on LVS_OWNERDATA listviews erroneously sends LVN_ODSTATECHANGED
 - #53196  foobar2000: Crashes randomly when opening items in menu bar while playing audio
 - #53275  emule crashes with ntdll_set_exception_jmp_buf error
 - #53364  Mouse does not move scroll bar in multiple applications (Framemaker 8, Audacity, Visio 2003)
 - #53366  Can't compile AES-CCM support prior to GNUTLS version 3.4.0
 - #53483  CFB implementation partially missing
 - #53487  Keyboard input doesn't work for a multiple games (Witcher 3, Just Cause 4, Unravel Two)
 - #53495  "HP" text does not render in Vestaria Saga Non-Visual Battles


Changes since 7.14:

Akihiro Sagawa (13):
      winmm/tests: Add tests for visibility of video window.
      mciqtz32: Don't hide video window when stopping.
      winmm/tests: Add tests for window style of video window.
      winmm/tests: Add tests for dimensions of video window.
      winmm/tests: Add tests for destination of video window.
      mciqtz32: Correct video window behavior by creating default window.
      mciqtz32: Fix MCI_DGV_WHERE_WINDOW behavior.
      mciqtz32: Reset the video size when changing video destination.
      mciqtz32: Hide the default video window when switching to another one.
      mciqtz32: Show the default video window when switching from another one.
      ieframe/tests: Add more IPropertyStorage read/write tests.
      ieframe/tests: Add a test for IPropertySetStorage::Open with STGM_WRITE.
      ieframe: Allow STGM_WRITE in IPropertyStorage::Open.

Alexandre Julliard (4):
      faudio: Import upstream release 22.08.
      mpg123: Import upstream release 1.30.2.
      tiff: Import upstream release 4.4.0.
      gitlab: Disable building image in forks.

Alistair Leslie-Hughes (9):
      xactengine3_7: Add helper function to add entries.
      xactengine3_7: Map SoundBank interfaces.
      xactengine3_7: Map IXACT3Cue interfaces.
      xactengine3_7: Map IXACT3Wave interfaces.
      xactengine3_7: Record context for each notications.
      xactengine3_7: Implement callback for supported messages.
      xactengine3_7: Return error on invalid notification value.
      sapi: Add AudioInput registry key.
      include: Add coclass SpMMAudioEnum.

Angelo Haller (6):
      comctl32/listview: Send one deselect all items notification for LVS_OWNERDATA listviews.
      comctl32/listview: Move sending LVN_ODSTATECHANGED notifications to a function.
      comctl32/listview: Send LVN_ODSTATECHANGED only for LVS_OWNERDATA listviews.
      comctl32/listview: Send LVN_ODSTATECHANGED notification for LVS_OWNERDATA listview on selection changes.
      comctl32/listview: Don't send LVN_ODSTATECHANGED for empty ranges.
      comctl32/tests: Add more ownerdata listview tests.

Arkadiusz Hiler (1):
      winebus.sys/sdl: Use the 8 absolute axes supported by DIJOYSTATE2.

Brendan Shanks (4):
      ntdll: Use correct mcontext struct on macOS under Wow64.
      wow64: Copy floating point and extended registers in copy_context_64to32.
      ntdll: Fix floating point and extended registers not being restored under Wow64.
      wow64cpu: Use -norelay for BTCpuSimulate.

Connor McAdams (2):
      include: Add UI Automation Event ID definitions.
      include: Add UI Automation COM client interface definitions.

David Gow (2):
      quartz: Open files with FILE_SHARE_DELETE in FileSource.
      quartz: Test: Files opened with FileSource can be deleted.

Dmitry Timoshkov (2):
      ntdll/tests: Fix compilation with PSDK.
      ntdll/tests: Add a bunch of tests for creating kernel objects with the names containing '\0'.

Eric Pouech (3):
      shlwapi/tests: Use wide strings literals.
      urlmon/tests: Don't use read as a global variable.
      test.h: WINETEST_COLOR=auto only outputs colors to a TTY.

Gabriel Ivăncescu (10):
      mshtml: Implement window.matchMedia() with MediaQueryList stub.
      mshtml: Implement MediaQueryList's media prop.
      mshtml: Implement MediaQueryList's matches prop.
      mshtml: Semi-implement non-string primitive data for postMessage.
      mshtml: Implement targetOrigin for postMessage.
      mshtml: Forward Document's Invoke to InvokeEx.
      mshtml: Implement window.location setter with a hook.
      mshtml: Implement window.setTimeout with a hook.
      mshtml: Implement document.location with a hook.
      mshtml: Return DISP_E_MEMBERNOTFOUND when not finding member by DISPID.

Georg Lehmann (1):
      winevulkan: Update to VK spec version 1.3.224.

Hans Leidekker (3):
      bcrypt: Add AES CFB chaining mode support.
      bcrypt: Add compatibility defines for AES CFB8.
      nsiproxy.sys: Support media connect state on Linux.

Jacek Caban (37):
      user32: Forward more scroll bar messages to win32u.
      win32u: Introduce NtUserGetWindowSysSubMenu.
      user32: Store MDI client info on client heap.
      user32: Use win32u to get and set MDI client info.
      user32: Use GetClientRect in EDIT_WM_ContextMenu.
      win32u: Introduce NtUserGetChildRect.
      user32: Remove USER_CheckNotLock.
      win32u: Move register_desktop_class implementation from user32.
      user32: Always use 64-bit cbWndExtra for edit control.
      win32u: Move builtin classes registration from user32.
      win32u: Store DPI awareness in ntuser_thread_info.
      win32u: Store wmchar_data in ntuser_thread_info.
      win32u: Move msg_source and recursion_count to ntuser_thread_info.
      win32u: Store receive_flags in ntuser_thread_info.
      user32: Don't include ntuser_private.h.
      win32u: Use platform-independent layout for DC_ATTR.
      win32u: Support wow64 in NtAllocateVirtualMemory calls.
      win32u: Use platform-independent layout for ntuser_thread_info.
      win32u: Store thread info in 64-bit TEB on wow64.
      win32u: Use NtUserMessageCall for NtUserSpyGetMsgName.
      ntdll: Introduce RtlSetLastWin32Error for unixlibs that additionally sets 32-bit error on wow64.
      include: Use RtlSetLastWin32Error in server.h.
      win32u: Use RtlSetLastWin32Error.
      winex11: Use RtlSetLastWin32Error.
      wineandroid: Use RtlSetLastWin32Error.
      winemac: Use RtlSetLastWin32Error.
      wow64win: Set last error in 32-bit TEB in wow64 thunks.
      wow64: Directly use CPU area in Wow64KiUserCallbackDispatcher for I386_CONTEXT.
      wow64: Preserve TEB exception frame in Wow64KiUserCallbackDispatcher.
      wow64win: Add initial user callbacks support.
      win32u: Use NtUserCallMessage for passing packed winproc result.
      wow64win: Implement more user thunks.
      wow64win: Implement more user callbacks.
      wow64win: Handle bitmaps and pens in wow64_NtGdiExtGetObjectW.
      wow64win: Always set output bits pointer in wow64_NtGdiCreateDIBSection.
      wow64win: Fix error handling in wow64_NtUserGetMessage.
      wow64win: Fix NULL msg handling in wow64_NtUserPeekMessage.

Nikolay Sivov (40):
      d2d1/tests: Use test context for command list test.
      d2d1: Add a command list object stub.
      d2d1: Allow setting command list as a target.
      include: Fix ID2D1CommandSink definition.
      d2d1/commandlist: Implement basic state recording commands.
      d2d1/commandlist: Implement clipping commands recording.
      d2d1/commandlist: Implement Clear() command.
      d2d1/commandlist: Implement DrawLine() command.
      d2d1/commandlist: Implement DrawGeometry() command.
      d2d1/commandlist: Implement DrawRectangle() command.
      d2d1/commandlist: Implement FillGeometry() command.
      d2d1/commandlist: Implement FillRectangle() command.
      d2d1/commandlist: Implement SetTextRenderingParams() command.
      d2d1/commandlist: Handle recording in RestoreDrawingState().
      d2d1/commandlist: Implement DrawGlyphRun() command.
      d2d1/commandlist: Implement DrawBitmap() command.
      d2d1/commandlist: Implement FillMesh() command.
      d2d1: Add a helper for DrawGlyphRun().
      d2d1/commandlist: Update text rendering params on DrawGlyphRun().
      dwrite: Fix stretch value validation in CreateTextFormat().
      include: Add newer D2D command sink interface definitions.
      d2d1: Implement setting primitive blend mode.
      d2d1/commandlist: Fix primitive blend playback.
      d2d1: Remove warning message for glyph run description.
      dwrite: Add ff00-ffef range to the fallback configuration.
      d2d1: Add parameter validation to FillOpacityMask().
      d2d1/commandlist: Implement FillOpacityMask() command.
      dwrite/fallback: Consider character size for returned mapped length.
      dwrite/fallback: Make sure all consecutively mapped characters belong to the same mapping.
      include: Fix ID2D1CommandSink::DrawImage() prototype.
      d2d1/commandlist: Implement DrawImage() command.
      d2d1/commandlist: Implement layer commands.
      dwrite/tests: Add a helper to create analyzer instance.
      dwrite/fallback: Add mappings for some CJK ranges.
      mfplat: Add some attributes related to transcoding.
      dwrite/fallback: Fill in some more fallback ranges for various scripts.
      dwrite/fallback: Add Georgian and Armenian ranges.
      mf: Add archive sink creation exported functions.
      mfreadwrite/writer: Create archive sink automatically when writer is created from url/bytestream.
      mfreadwrite/writer: Create output stream if it wasn't provided.

Olivier F. R. Dierick (1):
      secur32: Define AES-CCM ciphers missing from GNUTLS before 3.4.0.

Paul Gofman (4):
      winhttp: Avoid invalid memory access in netconn_resolve().
      ntdll: Also initialize icmp_over_dgram in sock_read().
      ntdll: Remove redundant assignment in fixup_icmp_over_dgram().
      d3d11: Validate layout description in d3d_input_layout_create().

Rafał Harabień (1):
      include: Allow printing test failure messages in bright red.

Robert Wilhelm (1):
      wshom: Use signed type for ExitCode in IWshShell3::Run().

Rémi Bernon (46):
      mf/tests: Add required SAR media type attributes tests.
      mf: Return MF_E_NO_MORE_TYPE from AudioRenderer GetMediaTypeByIndex.
      winegstreamer: Set the MF_MT_AUDIO_AVG_BYTES_PER_SECOND attribute.
      mf: Implement SAR media type required attributes checks.
      mf: Increase min_buffer_size to MF_MT_AUDIO_AVG_BYTES_PER_SECOND.
      winegstreamer: Use the correct name for WMADecMediaObject DMO.
      winex11.drv: Use a local desired_rect variable when placing displays.
      winex11.drv: Use DM_POSITION field bit to mark placed displays.
      winex11.drv: Update devmode dmPosition instead of new_rect.
      winex11.drv: Use DEVMODEW instead of x11drv_display_setting.
      winex11.drv: Iterate display settings using dmDriverExtra.
      winex11.drv: Constify set_current_mode DEVMODEW parameter.
      wmvcore/tests: Add more IWMReader_(Open|Start|Stop|Close) async checks.
      winegstreamer: Move IWMReaderCallbackAdvanced *callback_advanced to a local variable.
      winegstreamer: Leave the stream CS while waiting for a sample.
      winegstreamer: Make IWMReader state transitions asynchronous.
      gitlab: Move build steps to the build-all script.
      gitlab: Build every commit in a merge request.
      mf/tests: Rotate test videos 90° to better show vertical flips.
      mf/tests: Add video processor conversion tests.
      mf/tests: Add topology loader tests with video formats.
      winegstreamer: Better implement Video Processor MFT.
      mf: Use the MFT_CATEGORY_VIDEO_PROCESSOR category for converters.
      mf: Propagate missing attributes to downstream media types.
      win32u: Ignore DM_POSITION mode fields for available modes.
      winemac.drv: Split best display mode lookup to a separate helper.
      wineandroid.drv: Return early on EnumDisplaySettingsEx error.
      win32u: Split EnumDisplaySettingsEx into CurrentDisplaySettings entry.
      wineandroid.drv: Add missing DM_DISPLAYORIENTATION | DM_POSITION flags.
      winemac.drv: Avoid setting DM_POSITION on enumerated modes.
      server: Avoid reallocating rawinput device array with zero size.
      win32u: Avoid reallocating rawinput device array with zero size.
      win32u: Send the total number of registered devices to the server.
      win32u: Avoid invalid access when registered device alloc failed. (Coverity).
      wmvcore/tests: Add some IWMOutputMediaProps_SetMediaType tests.
      winegstreamer: Implement IWMOutputMediaProps_SetMediaType.
      qasf: Implement ASF Reader filter pin_query_accept.
      qasf: Implement ASF Reader filter pin_get_media_type.
      qasf: Implement ASF Reader filter pin DecideBufferSize.
      winegstreamer: Use a wg_audio_format switch rather than array indexes.
      winegstreamer: Use a wg_video_format switch rather than array indexes.
      qasf: Wait for IWMReader_Open to complete in ASF Reader Load.
      qasf: Implement ASF Reader filter init_stream and cleanup_stream.
      qasf: Start/stop the WM reader in asf_reader_init/cleanup_stream.
      qasf: Configure WMReader stream format in asf_reader_init_stream.
      qasf: Configure WMReader stream selection in asf_reader_init_stream.

Santino Mazza (4):
      ncrypt/tests: Test for NCryptEncrypt with RSA and PKCS1 padding.
      bcrypt/tests: Test for BCryptEncrypt with RSA keys.
      bcrypt: Initial RSA encryption implementation.
      ncrypt: Initial implementation for NCryptEncrypt.

Shaun Ren (10):
      webservices: Handle in/out parameters properly in WsCall.
      webservices: Write the correct headers when a request message is addressed.
      webservices: Implement error strings.
      webservices: Support faults in error.
      webservices: Add support for reading WS_FAULT values.
      webservices: Detect when a message contains a fault in read_envelope_start.
      webservices: Fill in type description for WS_FAULT_TYPE if necessary in WsReadBody.
      webservices/tests: Add a fault reading test for WsReadBody.
      webservices: Address the request message in WsCall.
      webservices: Add support for receiving fault messages.

Stefan Dösinger (2):
      ddraw: Don't account video memory for sysmem surfaces' draw textures.
      ddraw/tests: Add some video memory accounting tests.

Tim Clem (3):
      ntdll: Fix leak of mach_thread_self port.
      ntdll: Fix leak of mach_host_self port.
      kernelbase: Don't assume the length of the process image name.

Zebediah Figura (14):
      wined3d: Factor out mode_matches_filter().
      wined3d: Build a list of wined3d_display_mode structures in wined3d_output_get_mode[_count]().
      d3d9: Cache the output mode list.
      d3d8: Cache the output mode list.
      dxgi: Build the device list only once in dxgi_output_get_display_mode_list().
      wined3d: Build the device list only once in wined3d_output_find_closest_matching_mode().
      include: Print "succeeded inside todo block" messages in colour.
      include: Print "test marked todo" messages in colour.
      include: Print "test skipped" messages in colour.
      include: Print "test succeeded" messages in colour.
      winhttp/tests: Add some more tests for newline handling in custom header parsing.
      winhttp: Allow custom headers to be separated by any sequence of \r and \n.
      winhttp: Pass a length to parse_header().
      winhttp: Don't make a copy of the string in add_request_headers().

Zhiyi Zhang (4):
      include: Add IMediaParams definitions.
      dsdmo: Add IMediaParams stub interface.
      winegstreamer: Always check the return value from mf_media_type_from_wg_format().
      winegstreamer: Trace mf_media_type_from_wg_format_{audio|video}().