Wine Announcement

The Wine development release 8.19 is now available.

What's new in this release:
  - Mono engine updated to version 8.1.0.
  - More DirectMusic implementation.
  - 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 8.19 (total 44):

 - #8174   Ares P2P 2.x embedded media player fails to play .mpg files
 - #9027   No sound for rise of nations - all versions
 - #23489  Buccaneer: quits silently when entering the Tavern
 - #32395  Neverwinter Nights 2 : Broken sky with anti-aliasing turned on
 - #32896  Serious Sam: The Random Encounter has no sound
 - #34751  Aura: Fate of the Ages: sounds aren't played, but music works fine
 - #43372  valgrind shows a definite leak in dlls/d3dx9_36/tests/texture.c
 - #45072  Enabling csmt causes 100% CPU use in MikuMikuDance
 - #45135  Black Rockman Shooter has no sound
 - #45144  GED Keeper 2 (.NET 2.x based genealogical database app) fails to run with Wine-Mono
 - #45893  Midtown Madness: Extremely Slow with csmt on
 - #47767  Airport Mania First Flight - Very long loading times and awful performance
 - #49731  Shtriga: Summer Camp freezes with a black screen (PE-build only)
 - #49804  Multiple WPF 4.5+ .NET applications fail to run with Wine-Mono due to missing support of Ribbon control 'System.Windows.Controls.Ribbon' (OpenGL Extensions Viewer 6.1.2, CapFrameX v1.6.0)
 - #52014  Memento Mori freezes on launch
 - #52396  Stack overflows when running any 64-bit .Net 6 (.Net Core) program
 - #53264  mmdevapi:capture - test_audioclient() fails systematically on Windows 10 1909+
 - #54704  Black screen with Dungeon Keeper 2 and Wine v8.4
 - #55223  d3dx10_34:d3dx10, d3dx10_35:d3dx10, d3dx10_39:d3dx10 & d3dx10_42:d3dx10 sometimes fail on w11pro64-amd
 - #55228  kernel32:loader - test_ResolveDelayLoadedAPI() fails on Windows 10+
 - #55267  gdi32:font - The 64-bit test_RealizationInfo() gets invalid parameter errors on Windows 8+
 - #55269  ntdll:info - The 32-bit test_query_process_debug_port() gets a bad len on Windows 8 64-bit
 - #55555  secur32:secur32 - test_ticket_cache() crashes when Kerberos support is missing
 - #55560  The 64-bit dbghelp:dbghelp times out in Wine
 - #55577  advapi32:registry - The 64-bit test_performance_keys() sometimes crashes on Windows 10
 - #55580  The 32-bit uiautomationcore:uiautomation sometimes times out in Wine
 - #55605  winmm:mci sometimes gets an assertion in GitLab CI's Wine tests
 - #55650  dbghelp:dbghelp fails on macOS
 - #55654  Multiple Direct3D 8/9 applications have increased memory usage / run out of memory since Wine 8.14
 - #55688  dmusic:dmusic - test_default_gm_collection() crashes on macOS
 - #55718  Word 2007 is not able to print multiple copies of a page
 - #55720  msxml3:domdoc - test_domnode() fails in Wine
 - #55722  dmime:dmime - test_band_track_play() fails on macOS
 - #55725  The 32-bit amstream:amstream gets an assert and times out on the GitLab CI
 - #55744  psapi:psapi_main fails in Wine
 - #55745  tasklist.exe:tasklist - test_filter() fails to list ntdll.dll in Wine
 - #55746  wscript.exe:run - Dispatch_Invoke() gets wrong WScript.FullName in Wine
 - #55771  uxtheme:system - test_ShouldSystemUseDarkMode() fails on Windows 7 to 10 1909
 - #55772  uxtheme:system - test_EnableThemeDialogTexture() fails on Windows 7
 - #55777  user32:win - test_GetWindowModuleFileName() sometimes unexpectedly gets a filename on Windows 7
 - #55790  Unreal II The Awakening: general protection fault when loading a level
 - #55792  Tron 2.0 crashes before the menu appears
 - #55808  Catalan translation inserted twice in wine.desktop
 - #55817  Myst V (, demo): access violation when NPC begins to talk


Changes since 8.18:

Akihiro Sagawa (1):
      cmd: Reset totals after trailer output.

Alex Henrie (13):
      evr: Use debugstr_fourcc instead of debugstr_an.
      iccvid: Use debugstr_fourcc instead of debugstr_an.
      d3d10: Use debugstr_fourcc instead of debugstr_an.
      dwrite: Use the debugstr_fourcc function instead of reimplementing it.
      d3dx9_36: Use debugstr_fourcc instead of debugstr_an.
      d3dcompiler_43: Use debugstr_fourcc instead of debugstr_an.
      loader: Associate Wine with batch files.
      winemenubuilder: Disallow desktop integration for batch files.
      loader: Translate wine.desktop to Catalan.
      loader: Add separating dash to Spanish translation of wine.desktop.
      win32u: Use debugstr_fourcc instead of debugstr_an.
      wined3d: Use debugstr_fourcc instead of debugstr_an.
      commdlg: Set lCustData the same in GetSaveFileName as GetOpenFileName.

Alexandre Julliard (20):
      makefiles: Always use the global SOURCES variable for files.
      makefiles: Always use the global SOURCES variable for .svg files.
      makefiles: Always use the global SOURCES variable for .l files.
      makefiles: Always use the global SOURCES variable for .y files.
      ntdll: Move the relay trace on thread startup to LdrInitializeThunk().
      ntdll: Move RtlUserThreadStart implementation to the CPU backends.
      ntdll: Use .seh handler in RtlUserThreadStart on ARM64.
      ntdll: Also send segment registers to the server on suspend.
      zydis: Disable assertions.
      dbghelp: Fix a compiler warning on ARM64.
      Revert "loader: Translate wine.desktop to Catalan".
      ntdll: Simplify platform checks for exception handling functions.
      msvcrt: Simplify platform checks for exception handling functions.
      msvcrt: Export more exception handling functions on ARM platforms.
      kernel32: Export the Ums functions on ARM64.
      kernelbase: Export the extended context functions on all platforms.
      ntdll: Export RtlCopyMemory on ARM platforms.
      vcruntime140_1: Only build for x86-64.
      winebuild: Always use .balign for alignment.
      shlwapi: Remove unneeded UNALIGNED attributes.

Alexandros Frantzis (2):
      winewayland.drv: Ensure outputs can access xdg information robustly.
      winewayland.drv: Ensure the logical output dimensions have sane values.

Alistair Leslie-Hughes (4):
      msxml: Always increase error count when detected.
      msxml3: Don't call qsort if we have no data (Coverity).
      msxml3: Move tid_NULL out of possible enum values.
      msxml3: Do not leak bind context on error paths (Coverity).

Arkadiusz Hiler (1):
      winex11.drv: Send missed KEYUP events on KeymapNotify.

Bartosz Kosiorek (4):
      gdiplus: Optimize GDI32_GdipDrawPath (via prepare_dc function).
      gdiplus: Improve performance of units_to_pixels by not using division.
      gdiplus/tests: Add test for GdipIsOutlineVisiblePathPoint.
      gdiplus: Fix transformation in GdipIsOutlineVisiblePathPoint.

Brendan Shanks (9):
      configure: Only build Wayland if linux/input.h is present.
      winemac.drv: Replace sprintf with snprintf to avoid deprecation warnings.
      makedep: Replace sprintf with snprintf to avoid a deprecation warning on macOS.
      ctapi32: Ensure unixlib function tables and enum stay in sync.
      dnsapi: Ensure unixlib function tables and enum stay in sync.
      wpcap: Ensure unixlib function tables and enum stay in sync.
      winscard: Ensure unixlib function tables and enum stay in sync.
      winemac.drv: Disable declaration-after-statement warnings in ObjC files.
      winemac.drv: Fix minimizing windows when Stage Manager is enabled.

Connor McAdams (15):
      uiautomationcore: Release node lresult upon failure to allocate a node in uia_node_from_lresult().
      uiautomationcore/tests: Add tests for COM API EVENT_OBJECT_FOCUS translation.
      uiautomationcore: Potentially raise focus event for serverside providers in response to EVENT_OBJECT_FOCUS.
      uiautomationcore: Potentially raise focus event on the currently focused serverside provider in response to EVENT_OBJECT_FOCUS.
      uiautomationcore: Add support for translating EVENT_OBJECT_FOCUS for native MSAA IAccessibles.
      uiautomationcore/tests: Add tests for cached value helper functions in the COM API.
      uiautomationcore: Implement IUIAutomationElement::get_CachedControlType.
      uiautomationcore: Implement IUIAutomationElement::get_CachedHasKeyboardFocus.
      uiautomationcore: Implement IUIAutomationElement::get_CachedIsKeyboardFocusable.
      uiautomationcore: Implement IUIAutomationElement::get_CachedName.
      uiautomationcore: Implement IUIAutomationElement::get_CachedBoundingRectangle.
      uiautomationcore: Remove accidentally leftover FIXME.
      uiautomationcore: Only print FIXME messages for missing default clientside providers once.
      uiautomationcore/tests: Fix test failure on Win10v1709.
      uiautomationcore: Don't return failure from ::get_FragmentRoot stub on the default BaseHwnd provider.

Daniel Lehman (1):
      advapi32/tests: Add ReadEventLogW tests for direction.

Dmitry Timoshkov (4):
      crypt32: Avoid truncating unicode chars.
      crypt32/tests: Add some tests for quoted RDN values.
      crypt32: Add support for CERT_NAME_STR_NO_QUOTING_FLAG to CertNameToStr().
      cryptui: Use CertNameToStr(CERT_NAME_STR_NO_QUOTING_FLAG) to disable quoting.

Eric Pouech (9):
      wbemprox: Use correct string id.
      dsound: Forward error code when device cannot be found.
      quartz: Return correct error when no audio devices are present.
      mmdevapi: Don't fail when no audio backends are present.
      dbghelp: Rename internal field (system -> host).
      dbghelp: Use is_host_64bit for handling bitness of mach-o libs.
      dbghelp: Set the machine type for mach-O modules.
      dbghelp: Simplified module_find_by_addr().
      dbghelp: Remove unneeded parameter to pe_map_file.

Esme Povirk (2):
      user32/tests: Reduce size demand in test_hvredraw.
      mscoree: Update Wine Mono to 8.1.0.

Fabian Maurer (2):
      mf/tests: Increase buffer to prevent stack corruption.
      ntdll: Add WinSqmSetIfMaxDWORD stub.

Gabriel Ivăncescu (4):
      jscript: Fix when last element doesn't exist.
      jscript: Fix Array.reduce when last element doesn't exist.
      mshtml: Set outer window to uninitialized page when document obj is released.
      mshtml: Return proper errors when navigating with no browser.

Gerald Pfeifer (1):
      readme: Update FreeBSD information.

Hans Leidekker (3):
      kernelbase: Trace global memory counters in decimal.
      advapi32/tests: Get rid of workarounds for old Windows versions.
      advapi32/tests: Skip WoW64 registry tests on 32-bit.

Helix Graziani (1):
      uxtheme/tests: Skip the test if the SystemUsesLightTheme value isn't found.

Jacek Caban (9):
      dwrite: Use DWRITE_FONT_FEATURE_TAG for tags argument type in shape_get_typographic_features.
      dwrite/tests: Avoid implicit DWRITE_RENDERING_MODE to DWRITE_RENDERING_MODE1 casts.
      dwrite: Avoid implicit casts between DWRITE_RENDERING_MODE and DWRITE_RENDERING_MODE1.
      d2d1/tests: Use D2D1_INTERPOLATION_MODE constants in DrawImage calls.
      d2d1: Pass interpolation mode as D2D1_INTERPOLATION_MODE to d2d_device_context_draw_bitmap.
      d2d1: Don't cast D2D1_THREADING_MODE to D2D1_FACTORY_TYPE in D2D1CreateDevice.
      wined3d: Use return type to return result from read_dword.
      wined3d: Remove unused parallel_point_count variable.
      wined3d: Use unsigned type for res_type bit field.

Jeff Smith (4):
      gdiplus/tests: Add tests related to setting the page tranform.
      gdiplus: Implement GdipResetPageTransform.
      gdiplus: Fix a GdipSetPageScale return status.
      gdiplus: Fix GdipSetPageUnit parameter validation.

Jinoh Kang (1):
      ntdll/tests: Use win_skip() for missing APIs in test_query_process_debug_port_custom_dacl.

Louis Lenders (1):
      uxtheme: Add ShouldAppsUseDarkMode.

Matteo Bruni (5):
      wined3d: Fix handling of system-memory GL vertex buffers.
      wined3d: Handle NULL push constant buffers with the ARB shader backend.
      wined3d: Allow FFP blits to non-render targets with the 'none' shader backend.
      wined3d: Implement shadow sampling for the ARB shader backend.
      wined3d: Don't skip setting clip planes if the view transform state is dirty.

Mohamad Al-Jaf (16): Remove flakey ref count test.
      include: Add ISystemMediaTransportControlsDisplayUpdater interface definition. Implement ISystemMediaTransportControls::get_DisplayUpdater(). Add ISystemMediaTransportControlsDisplayUpdater::get/put_Type() tests. Implement ISystemMediaTransportControlsDisplayUpdater::get/put_Type().
      include: Add IMusicDisplayProperties interface definition. Implement ISystemMediaTransportControlsDisplayUpdater::get_MusicProperties(). Add IMusicDisplayProperties::get/put_Title() tests. Implement IMusicDisplayProperties::get/put_Title(). Add IMusicDisplayProperties::get/put_Artist() tests. Implement IMusicDisplayProperties::get/put_Artist().
      include: Add IMusicDisplayProperties2 interface definition. Add IMusicDisplayProperties2 stub interface. Add IMusicDisplayProperties2::get/put_AlbumTitle() tests. Implement IMusicDisplayProperties2::get/put_AlbumTitle(). Return success in ISystemMediaTransportControlsDisplayUpdater::Update().

Nikolay Sivov (7):
      mfmediaengine/tests: Use a single helper to create engine instances.
      include: Add IMFMediaEngineAudioEndpointId definition.
      mfmediaengine: Keep engine extension pointer.
      mfmediaengine: Use extension object in CanPlayType().
      maintainers: Add EVR to the Media Foundation section.
      mfmediaengine: Mask some source flags returned from GetResourceCharacteristics().
      d3d10_1/tests: Add some more tests for fx_4_1 blend states.

Paul Gofman (8):
      ntdll: Use .seh handler instead of __TRY in RtlUserThreadStart() on x64.
      ntdll: Set EH_NESTED_CALL flag in call_stack_handlers() on x64.
      ntdll: Use .seh handler in call_handler() on x64.
      ntdll/tests: Add test for collided unwind.
      ntdll: Use .seh handler in call_unwind_handler() on x64.
      winegstreamer: Add AVDecVideoAcceleration_H264 attribute for h264 decoder MFT.
      ntdll: Define heap block's BLOCK_FLAG_LFH as 0x80.
      shell32: Use SearchPathW() for %l/%L in SHELL_ArgifyW().

Piotr Caban (1):
      gdi32: Fix leak in GdiDeleteSpoolFileHandle.

Rémi Bernon (56):
      include: Fix debugstr_fourcc printf format to print at most 4 chars.
      dmime: Rewrite message thread with a condition variable.
      dmusic: Set synth sink master clock when creating port.
      dmsynth: Do nothing in IDirectMusicSynth_SetMasterClock.
      dmusic: Forward IDirectMusicPort_Activate to synth and sink.
      dmime: Use port latency time for messages with -1 time.
      dmime: Update performance latency time with port latency.
      dmime: Use latency time to decide when to process messages.
      dmsynth: Create a render thread on sink activation.
      dmsynth: Implement sink rendering to DirectSound buffer.
      dmsynth: Correctly lookup instrument from the default drum bank.
      dmsynth: Avoid using fluid_ prefix for internal helpers.
      dmsynth: Fix DLS2 to FluidSynth conversion for CONN_SRC_CCx.
      dmsynth: Fix FluidSynth generators for direct connections.
      dmsynth: Convert modulator values from DLS2 to SF2 convention.
      dmsynth: Set default modulators according to the DLS2 spec.
      dmband: Download segment tracks if performance auto-download is set.
      dmband: Set DMUS_PATCH_PMSG bank LSB/MSB from instrument patch.
      dmime: Only use index if group is set in IDirectMusicSegment_SetParam.
      dmime: Don't interrupt track iteration if SetParam failed.
      dmime: Adjust MIDI message time with DMUS_NOTE_PMSG nOffset.
      dmusic: Use a dmusic_midi.h header for MIDI messages.
      dmime: Translate some DMUS_CURVE_PMSG messages to MIDI.
      dmime: Remove FIXME from methods now mostly implemented.
      dmime: Avoid crashing when purging notification messages.
      dmime: Return S_OK from wave track SetParam GUID_UnloadFromAudioPath.
      dmime: Return hr from wave track SetParam GUID_DownloadToAudioPath.
      dmusic: Implement IDirectMusicObject interface on wave objects.
      dmusic: Use the IDirectMusicObject interface for waves.
      dswave: Use the dmusic wave object implementation.
      dmime: Avoid releasing the newly created graph twice.
      dmime/tests: Remove flaky track playing state test.
      dmime/tests: Avoid checking message segment state reference count.
      dmime/tests: Ignore failure on missing gm.dls in test_band_track_play.
      dmusic/tests: Skip test_default_gm_collection if gm.dls is missing.
      dmsynth: Set loop and sample generators on the fluid_voice.
      dmime: Force recompute MIDI message reference time.
      dmband: Skip band / band track chunk on parsing failure.
      dmime: Skip sequence track chunk on parsing failure.
      dmime: Skip segment chunk on parsing failure (or success).
      dmime: Ignore badly formed wave if format and data have been found.
      dmime: Remove shadowing local hr variable.
      dmusic: Ignore some known wave chunks.
      gitlab: Run tests with LP_NUM_THREADS=4 env var.
      mf/tests: Avoid crashing if MF_BYTESTREAM_EFFECTIVE_URL is missing.
      dmime: Pass IDirectMusicPerformance8 to segment state functions.
      dmime: Pass PlaySegmentEx start time as track time offset.
      dmband: Use time_offset to align track start with music time.
      dmime: Use time_offset to align track start with music time.
      dmime: Use an internal performance message for segment end.
      dmstyle: Rename IDirectMusicStyle8Impl method prefix to style.
      dmstyle: Get rid of the IDirectMusicStyle8Impl typedef.
      dmstyle: Rewrite style part list parsing.
      dmstyle: Rewrite style pref chunk parsing.
      dmstyle: Rename style_motif to style_pattern.
      dmstyle: Rewrite style pttn list parsing.

Sven Baars (2):
      wined3d: Don't override the default renderer in wined3d_dll_init().
      nsiproxy.sys: Return STATUS_SUCCESS from ipv6_forward_enumerate_all() on non-Linux.

Yuxuan Shui (1):
      mfmediaengine: Don't send event notify when engine is shutdown.

Zebediah Figura (18):
      advapi32: GetNamedSecurityInfo() takes a const name argument.
      advapi32/tests: Use StringFromGUID2().
      advapi32: Fix rewinding the last path segment in SetSecurityInfo().
      advapi32/tests: Add more tests for GetSecurityInfo().
      advapi32: Respect object type in GetSecurityInfo().
      advapi32: Respect object type in SetSecurityInfo().
      user32/tests: Add basic tests for GetUserObjectSecurity().
      advapi32: Implement GetSecurityInfo(SE_WINDOW_OBJECT).
      wined3d: Rename buffer dirty ranges fields.
      wined3d: Use wined3d_array_reserve() to pre-allocate the buffer dirty ranges array.
      wined3d: Do not track dirty ranges for buffers without WINED3D_BUFFER_USE_BO.
      d3d10core/tests: Avoid POINT sampling exactly halfway between two mip levels.
      d3d11/tests: Avoid POINT sampling exactly halfway between two mip levels.
      include: Convert d3d10shader.h to an IDL.
      include: Convert d3d10effect.h to an IDL.
      ntdll: Do not reject data directories at the end of a file.
      ws2_32/tests: Make sure that WSARecv() completes synchronously in test_WSARecv().
      ws2_32/tests: Wait for AFD_POLL_RESET in test_get_events_reset().