Wine Announcement

The Wine development release 5.20 is now available.

What's new in this release (see below for details):
  - More work on the DSS cryptographic provider.
  - A number of fixes for windowless RichEdit.
  - Support for FLS callbacks.
  - Window resizing in the new console host.
  - Various bug fixes.

The source is available from the following locations:

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 5.20 (total 36):

  14640  Multiple OpenGL applications and games fail at ChoosePixelFormat/SetPixelFormat (Lazarus, Counterclockwise, USI T3 emulator)
  30364  X3 Reunion hangs at start
  33392  .NET Framework 4.0 installer misreports disk space if not enough disk space available 'Drive C: Required - 64u MB, Available - 64u MB' ('FormatMessageA/W' needs to support I64)
  34558  Multiple applications and games wrapped with ASProtect 1.x-2.x protection scheme fail to start after registration (Farm Frenzy 2, Alawar, FL Studio 11.x VSTi 'Slayer2' plugin, FORScan)
  35694  Serena hits deadlock on exit
  35744  LabChart Reader 8 installer ends prematurely (VBScript support for class default sub missing)
  36873  Multiple games have non-functional mouse input, invisible mouse cursor (Chronology, Mount & Blade II: Bannerlord)
  39297  kernel32.IsValidCodePage and friends don't support code page 708.
  46950  UFOHD2 crashes when trying to open camera preview
  47771  Multiple games have broken mouse movement (Alan Wake, Hard Reset, Battlefield 3, Watch Dogs, Sniper Elite V2 Remastered)
  47906  Alice Madness Return crashes
  48336  Applications using MS ADO require Recordset Connect to be implemented (Enterprise Architect, Brickcom CMS client)
  48717  Saints Row 2 needs xactengine3_2.dll
  49012  Application build with .NET CoreRT crashes due to FLS callbacks not being called
  49044  CPU-Z 1.92 crashing on startup
  49450  Adobe Shockwave Player 11.x plugin installer fails with jscript:cc_parser_parse '&&' expression not implemented
  49529  5.12 regression: Wine segfaults if the +heap debug channel is enabled
  49661  Red Evil:black screen in game.
  49673  Backpacker 3:Americana:unhandled exception
  49679  Visual Studio 98 and Visual Basic 6 installers hang
  49808  Stellaris loads very slowly
  49814  FreeBSD 12.1 undebuggable crash on startup (regression)
  49821  Seismobuild crashes at start
  49860  Dungeons & Dragons Online 64bit client fails to start in wine-5.16, 5.17, 5.18
  49904  all wine processes show a definite leak in load_libwine()
  49950  d3d10:reflection tests crash
  49960  The Sims Complete Collection is stuck on playing intro
  49966  powershell_ise.exe fails with Unhandled Exception: System.NotImplementedException: The method or operation is not implemented.  at System.Runtime.InteropServices.Marshal.ThrowEx
  49982  A '(call )' line does not reset %ERRORLEVEL% to 0
  49997  Capella no yakusoku: Game doesn't start (black screen)
  50000  Wineconsole crashes on F8
  50004  Python script hangs when pipe IPC is used
  50008  Metro Exodus fails to launch since commit fde5967f725624c5ee4995dcbe22f262979c5c9c
  50016  PS Remote Play can't install: "To use PS Remote Play, update your PC's OS to the latest version, and then install the Media Feature Pack from Microsoft."
  50020  mf:mf tests crash on Windows 7
  50025  Cannot run Line (chat app) on Wine


Changes since 5.19:

Aaron Hill (1):
      cmd: Set errorlevel to 0 when 'call' is invoked with an empty string.

Akihiro Sagawa (1):
      documentation: Update Japanese translation.

Alexandre Julliard (20):
      makefiles: List all possible targets in the stub makefiles.
      winebuild: Add __imp_ label on the import data for delayed imports.
      server: Create the NLS directory.
      ntdll: Make NtGetNlsSectionPtr() into a proper Nt syscall.
      gdi32: Move the font driver out of freetype.c.
      gdi32: Move the other exported freetype functions to the font backend table.
      gdi32: Move the realized font handle allocation out of freetype.c.
      gdi32: Move the font cache list out of freetype.c.
      gdi32: Move the font file information out of freetype.c.
      gdi32: Move the font name information out of freetype.c.
      gdi32: Move the font charset information out of freetype.c.
      gdi32: Move the font realization information out of freetype.c.
      gdi32: Move more font metrics information to the generic font structure.
      gdi32: Move the glyph metrics cache out of freetype.c.
      gdi32: Move the font critical section out of freetype.c.
      gdi32: Move the get_glyph_outline() helper to the font function interface.
      gdi32: Move the GetFontFileData() implementation out of freetype.c.
      gdi32: Move the GetGlyphIndices() implementation out of freetype.c.
      gdi32: Don't bother caching the font type.
      makefiles: Explicitly create destination dirs when installing symlinks.

Alistair Leslie-Hughes (5):
      xactengine3_7: Initial IXACT3Engine tests.
      sapi: Return a default token in ISpVoice::GetVoice
      msado15: Implement _Connection Open.
      server: Fix compile error when irda.h is available.
      msado15: Implement _Recordset get/put CursorType.

Anton Baskanov (1):
      amstream: Implement SSUPDATE_CONTINUOUS flag in IDirectDrawStreamSample::Update.

Arkadiusz Hiler (1):
      user32: Implement GetMouseMovePointsEx().

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

Austin English (5):
      qedit: Add a version resource.
      qasf: Add a version resource.
      dsdmo: Add a version resource.
      dplaysvr: Add stub program.
      dpvsetup: Add stub program.

Brendan Shanks (2):
      winemac: Remove unused GetCurrentProcess() call.
      mountmgr: Avoid unnecessary permission prompts on macOS 10.15 and newer.

Damjan Jovanovic (1):
      riched20: Implement ITextRange/ITextSelection Copy and Cut.

Daniel Lehman (1):
      tzres: Add Eastern Standard Time (Mexico) Zone.

Derek Lesho (1):
      mfplat: Fix asynchronous object creation from URL.

Dmitry Timoshkov (1):
      advapi32/tests: Add QueryServiceStatusEx test for the EventLog service.

Esme Povirk (9):
      windowscodecs: Add a unix library and start to use it for PNG.
      windowscodecs: Start loading PNG in unix lib.
      windowscodecs: Get PNG frame information from unix lib.
      windowscodecs: Move PNG CopyPixels to unix lib.
      windowscodecs: Use the unix library to find PNG metadata.
      windowscodecs: Use unix lib to get PNG color contexts.
      windowscodecs: Do not call png_read_end.
      windowscodecs: Add a general wrapper around the decoder interface.
      mscoree: Implement GetTokenForVTableEntry.

Georg Lehmann (3):
      winevulkan: Generate helpers for wrapped handles.
      winevulkan: Store a mapping from native handles to wrappers.
      winevulkan: Implement VK_EXT_debug_utils.

Gijs Vermeulen (1):
      qcap/capturegraph: Return E_POINTER when ICaptureGraphBuilder2::FindInterface() is called with NULL filter.

Hans Leidekker (27):
      dssenh: Don't store the algorithm handle for hashes.
      dssenh: Implement CPDuplicateHash.
      dssenh: Implement CPDuplicateKey.
      dssenh: Implement CPGenRandom.
      dssenh: Set last error in CPHashData.
      bcrypt: Add support for duplicating asymmetric keys.
      dssenh: Implement CPExportKey.
      dssenh: Implement CPSignHash.
      dssenh: Implement CPVerifySignature.
      dssenh: Implement CPGenKey.
      bcrypt/tests: Fix a key handle leak.
      bcrypt: Copy all fields in key_duplicate.
      dssenh: Implement CRYPT_DELETEKEYSET.
      dssenh: Implement CPGetUserKey.
      dssenh: Access the hash value directly in CPSignHash and CPVerifySignature.
      dssenh: Implement CPSetHashParam.
      dssenh: Add support for exporting private keys.
      dssenh/tests: Add tests for CryptDuplicateKey.
      dssenh: Always duplicate container keys.
      dssenh: Add support for importing version 3 public keys.
      dssenh: Implement CRYPT_MACHINE_KEYSET.
      dssenh: No longer prefer native.
      bcrypt: Use internal helpers to generate hashes.
      msado15: Use correct string type for default provider.
      msado15: Avoid a crash with tracing on.
      wbemprox: Also return system properties from IWbemClassObject::GetNames.
      wbemprox: Implement IWbemClassObject::GetMethodQualifierSet.

Haoyang Chen (2):
      gdiplus: Fix texture brush rotation.
      wbemprox: Implement Win32_SoundDevice.Status.

Henri Verbeet (5):
      wined3d: Make adapter_vk_clear_uav() static.
      wined3d: Avoid accessing NULL depth/stencil state in wined3d_context_vk_update_graphics_pipeline_key().
      wined3d: Clear the graphics pipeline key stencil test state when the stencil test is disabled.
      wined3d: Do not invalidate STATE_RENDER(WINED3D_RS_TWOSIDEDSTENCILMODE).
      wined3d: Use wined3d_get_primary_adapter_luid() if we didn't get a valid LUID from Vulkan.

Huw D. M. Davies (50):
      riched20: Use a structure to hold the repaint range.
      riched20: Use ME_Paragraph ptrs for the update range.
      riched20: Use the table_row_start/end() helpers.
      riched20: Use ME_Paragraph and ME_Run ptrs in GetCursorCoordinates().
      riched20: Use ME_Paragraph ptrs in InternalDeleteText().
      riched20: Use paragraph and run ptrs in InsertTextFromCursor().
      riched20: Use the run and para helpers in the cursor movement functions.
      riched20: Use paragraph ptrs in FindPixelPos().
      riched20: Pass a run ptr to the run joining function.
      riched20: Return a run ptr from the run creation function.
      riched20: Return a run ptr from the run splitting function.
      riched20: Don't mark the diTextStart paragraph as requiring repainting.
      riched20: Don't return the diTextStart paragraph from para_prev().
      riched20: Use run ptrs in SetCharFormat().
      riched20: Return a run ptr from the run insert function.
      riched20: Use run ptrs in GetCharFormat().
      riched20: Simplify the cursor from char offset function.
      riched20: Simplify the char offset from run offset function.
      riched20: Remove InternalInsertTextFromCursor().
      riched20: Use a run ptr in GetXForArrow().
      riched20: Pass a paragraph ptr to the table update flags function.
      riched20: Return a paragraph ptr from the paragraph creation function.
      riched20: Use paragraph and run ptrs in the paragraph splitting function.
      riched20: Pass a run ptr to, and return a para ptr from, the para splitting function.
      riched20: Pass and return a paragraph ptr in the paragraph joining function.
      riched20: Pass a paragraph ptr to the paragraph destruction function.
      riched20: Pass a paragraph ptr to a couple of the drawing helpers.
      riched20: Pass a run ptr to the run drawing function.
      riched20: Use helpers in the cursor to start/end functions.
      richedit: Use the correct ptr to the cell.
      riched20: Pass run ptrs to the font and colour table writer function.
      riched20: Pass paragraph ptrs to the paragraph property writers.
      riched20: Update both co-ords during layout.
      riched20: Start re-wrap loop at the beginning of any table.
      riched20: Don't split the paragraph at the first \intbl.
      riched20: Use the paragraph and run helpers in the delete text function.
      riched20: Remove a redundant condition.
      riched20: Pass a cursor ptr to the insert style retrieval function.
      riched20: Pass and return paragraph ptrs in the table append row function.
      riched20: Return a paragraph ptr from the table insert helper.
      riched20: Return a para ptr from the insert start table row functions.
      riched20: Return paragraph ptrs from the remaining table insert functions.
      riched20: Use cell ptrs in the rtf parsing code.
      riched20: Use cell ptrs in the rtf writing code.
      riched20: Simplify some of the drawing code using a few helpers.
      riched20: Use cell and para ptrs in the table border drawing function.
      riched20: Use cell ptrs in the wrapping functions.
      riched20: Use cell ptrs in the table position to offset function.
      riched20: Use run and para ptrs in the cursor move lines function.
      riched20: Remove the caret at end hack.

Jacek Caban (32):
      conhost: Support window resizing.
      conhost: Import scrolling support from wineconsole.
      conhost: Store title as zero terminated string.
      conhost: Set console window title.
      kernelbase: Use conhost in AllocConsole.
      wineconsole: Reimplement as AllocConsole wrapper.
      kernel32: Always use conhost for WriteConsoleW.
      kernel32: Always use conhost for ReadConsoleW.
      kernel32: Move ReadConsole and WriteConsole to kernelbase.
      kernelbase: Remove window position adjustment from SetConsoleCursorPosition.
      kernelbase: Remove no longer needed free_console server call from FreeConsole.
      server: Remove no longer used console requests.
      server: Remove no longer needed server-side screen buffer ioctls.
      server: Remove no longer needed server-side console input ioctls.
      server: Remove no longer needed console_input fields.
      server: Remove no longer needed screen_buffer fields.
      server: Remove no longer needed console_input_events_append.
      server: Remove no longer used console renderer object.
      kernel32/tests: Use current console input in test_ReadConsole.
      console: Don't allow blocking read ioctls on screen buffer object.
      conhost: Fix check for the last history index in edit_line_find_history.
      conhost: Remove no longer needed SET_CONSOLE_INPUT_INFO flags.
      conhost: Remove no longer needed CHAR_INFO_MODE_TEXTSTDATTR.
      conhost: Remove no longer needed SET_CONSOLE_OUTPUT_INFO flags.
      conhost: Remove no longer needed condrv_input_info fields.
      kernel32/tests: Add more FlushConsoleInputBuffer tests.
      kernel32: Use new IOCTL_CONDRV_SCROLL ioctl for FlushConsoleInputBuffer implementation.
      kernel32: Move FlushConsoleInputBuffer to kernelbase.
      server: Implement console input flush in server.
      kernel32: Import FlushFileBuffers from kernelbase.
      conhost: Remove no longer needed non-blocking IOCTL_CONDRV_READ_INPUT.
      kernelbase: Move console code page validation to conhost.

Jan Sikorski (4):
      dbghelp: Avoid forwarded exports.
      windowscodecs: Add a missing FIXME.
      windowscodecs: Add 32bppRGBA to 32bppBGRA copy.
      windowscodecs/tests: Add 32bppRGBA/BGRA converter tests.

Jeff Smith (1):
      comdlg32: Set background to transparent for font dialog sample text.

Joachim Priesner (1):
      ntdll: Fix read buffer overflow in find_file_in_dir().

Julian Rüger (1):
      documentation: Update German translation.

Lauri Kenttä (1):
      po: Update Finnish translation.

Liam Middlebrook (1):
      winevulkan: Update to VK spec version 1.2.158.

Louis Lenders (1):
      dwmapi: Quiet noisy fixme.

Matteo Bruni (1):
      d3dcompiler/tests: Always expect failure in test_reflection_desc_ps_output() on d3d10.

Michael Stefaniuc (40):
      qmgr: Use wide-char string literals.
      ntdsapi: Use wide-char string literals.
      write: Use wide-char string literals.
      plugplay: Use wide-char string literals.
      spoolsv: Use wide-char string literals.
      termsv: Use wide-char string literals.
      presentationfontcache: Use wide-char string literals.
      winmgmt: Use wide-char string literals.
      localui: Use wide-char string literals.
      localui/tests: Use strings instead of arrays of chars.
      wer: Use wide-char string literals.
      iexplore: Use wide-char string literals.
      opcservices: Use wide-char string literals.
      msisip: Use wide-char string literals.
      spoolss: Use wide-char string literals.
      lz32/tests: Use wide-char string literals.
      taskmgr: There's no need to GetProcAddress() IsHungAppWindow().
      taskmgr: SwitchToThisWindow() is available, remove alternate code path.
      wbemprox: Use 0 terminated WCHAR strings in wql.y.
      wbemprox: Use wide-char string literals.
      explorer: Use the WCHAR string version of LoadLibrary.
      taskmgr: Shell32 is imported, no need to load it again.
      rpcss: Use wide-char string literals.
      taskmgr: Use GetGuiResources() directly.
      dsound: Use wide-char string literals.
      schtasks/tests: Use wide-char string literals.
      uxtheme/tests: Use wide-char string literals.
      find: Use wide-char string literals.
      uxtheme: Use wide-char string literals in struct initialization.
      uxtheme: Use wide-char string literals.
      taskmgr: Use NtQuerySystemInformation() directly.
      taskmgr: Use two kernel32 functions directly.
      xcopy: Use wide-char string literals.
      ipconfig: Use wide-char string literals.
      xcopy: Avoid an empty if-block.
      msi: Use 0 terminated WCHAR strings in the SQL tokenizer.
      cryptnet/tests: Change the scope of a variable from global to local.
      cryptnet: Use wide-char string literals.
      inetcomm: Zero terminate the mhtml WCHAR strings.
      inetcomm: Use wide-char string literals.

Myah Caron (2):
      kernelbase: Use command_lineW for GetCommandLineW.
      kernelbase: Remove DECLSPEC_HOTPATCH for GetCommandLine[AW].

Nikolay Sivov (57):
      kernelbase: Add a name for codepage 708.
      dbgeng/tests: Use different flags for unsupported options.
      mfplat/mediatype: Enable IMFVideoMediaType based on major type.
      mfplat/mediatype: Add IMFAudioMediaType stub.
      evr/mixer: Add SetOutputBounds().
      evr/mixer: Use regular media type interface for input streams.
      evr/mixer: Use regular media type interface for the output stream.
      evr/mixer: Implement SetOutputType().
      dxva2/tests: Add a test for GetVideoProcessorDeviceGuids().
      d3d11/tests: Add some more tests for device context state.
      mf/evr: Do not use IMFVideoMediaType when setting mixer types.
      mf/evr: Trigger media type negotiation through presenter for reference stream.
      evr/tests: Add a test for MF_SA_REQUIRED_SAMPLE_COUNT.
      evr/mixer: Keep original media type instances for inputs.
      evr/tests: Use wide string literals.
      evr: Add already implemented functions from mfplat.dll.
      evr: Partially implement MFCreateVideoSampleFromSurface().
      evr/sample: Implement IMFDesiredSample.
      evr/sample: Add a surface buffer on sample creation.
      evr/sample: Implement GetService() for surface buffers.
      mf/evr: Add attributes store for the sink.
      mf/evr: Add default attributes on sink creation.
      evr/tests: Add a mixer tests for clearing output in idle state.
      mf/tests: Add a test for EVRConfig_ handling for already initialized presenter.
      mf/evr: Add per-stream lock.
      mf/evr: Implement NotifyPreroll().
      mf/evr: Implement stream state change events.
      server: Handle duplicate handles when inheriting them for the new process.
      comsvcs: Create MTA without initialization thread.
      include: Fix typo in IDirectXVideoProcessor argument name.
      dxva2: Fix new handle flags initialization.
      dxva2: Add video processor stub.
      dxva2: Add GetCreationParameters().
      evr/mixer: Keep one input sample per stream.
      evr/mixer: Map render target type to video processor guid that supports it.
      ntdll/actctx: Handle empty <dependency> element.
      dxva2: Fix valid handle range test.
      evr/mixer: Keep dxva device handle around.
      evr/mixer: Create dxva processor when output type is set.
      evr/mixer: Ignore draining command.
      evr/mixer: Drop input samples on flush.
      evr/mixer: Maintain streaming state flag.
      comsvcs/tests: Close test thread handles.
      mf/sar: Use advertised type in IsMediaTypeSupported().
      evr/mixer: Implement GetInputStatus().
      evr/mixer: Implement GetOutputStatus().
      evr/mixer: Fill output surfaces when not streaming.
      evr/mixer: Only accept single output buffer in ProcessOutput().
      evr/presenter: Add IMFVideoPositionMapper stub.
      evr/sample: Implement SetDirectXManager().
      mf/evr: Create sample allocators on demand.
      mf/evr: Set the device manager for sample allocators.
      mfplat: Implement DXGI device manager handle management.
      mfplat: Implement GetVideoService() for the device manager.
      mf: Add default attributes for sample copier.
      evr/mixer: Send sample requests when switching to streaming mode.
      evr/mixer: Request more sample on successful ProcessOutput().

Paul Gofman (10):
      ntdll: Always align stack in call_user_apc_dispatcher() on x86_64.
      ntdll: Zero all FLS slots instances in RtlFlsFree().
      ntdll: Call FLS callbacks.
      ntdll: Support AVX registers for other thread in Nt{Get|Set}ContextThread().
      ntdll/tests: Test getting and setting AVX registers for the other thread.
      ntdll/tests: Test AVX context with debugger.
      kernelbase: Fix status check in GetExitCodeProcess().
      server: Add SeTcbPrivilege (SE_TCB_NAME) to the list of admin privileges.
      wined3d: Add GPU information for NVIDIA GeForce GTX 1080 Mobile.
      ntdll: Fix xmm registers copy offset in call_consolidate_callback() on x86_64.

Piotr Caban (3):
      ucrtbase: Support UTF8 codepage in _wcstombs_l.
      ucrtbase: Support UTF8 codepage in _wctomb_s_l.
      ucrtbase: Support UTF8 codepage in wctomb.

Robert Wilhelm (3):
      jscript: Cc_parser_parse implement '&&' expression.
      vbscript: Add is_default flag to function_decl_t.
      vbscript: Support class default sub.

Roman Pišl (1):
      kernelbase: Fix comment and trace message in console.

Sven Baars (3):
      evr/tests: Fix a test failure on Windows 7.
      mmdevapi/tests: Fix some test failures on Windows <= 7.
      d3dcompiler: Fix a leak on error path (Coverity).

Vijay Kiran Kamuju (1):
      hnetcfg: Return S_OK in get_StaticPortMappingCollection.

Zebediah Figura (20):
      strmbase: Print colorimetry information in strmbase_dump_media_type().
      ws2_32/tests: Rewrite the CF_DEFER test in test_AcceptEx().
      ws2_32/tests: Remove some workarounds for no longer supported versions of Windows.
      ws2_32/tests: Remove workarounds from test_events().
      ws2_32/tests: Fix a test failure on w10pro64.
      ws2_32/tests: Add more tests for passing short buffers to AcceptEx().
      wine.inf: IsInstalled is a DWORD value.
      wintrust: Stub CryptCATPutMemberInfo().
      wintrust: Stub CryptCATPersistStore().
      wintrust: Stub CryptCATPutAttrInfo().
      wintrust: Stub CryptCATPutCatAttrInfo().
      mssign32: Stub SignerSign().
      ws2_32/tests: Fix an intermittent test failure on w10pro64.
      ws2_32: Use server-side async I/O in AcceptEx().
      ws2_32: Use server-side async I/O in accept().
      server: Forbid accepting into the same socket more than once.
      quartz: Return the paused timestamp from IMediaSeeking::GetCurrentPosition() if the graph is running asynchronously.
      winegstreamer: Respect integer promotion rules when clamping timestamp + diff.
      winegstreamer: DirectShow and GStreamer proportions are inverted with respect to each other.
      quartz/tests: Use compare_double() to test IBasicVideo::get_AvgTimePerFrame().

Zhiyi Zhang (4):
      wined3d: Clean up swapchain state on wined3d_swapchain_init() failure paths.
      ddraw/tests: Use the correct version of DirectDraw calls.
      ddraw/tests: Fix possible memory leaks.
      dxgi/tests: Fix a window leak in test_inexact_modes().

Ziqing Hui (2):
      gdiplus/tests: Add tests for GdipMeasureString with StringFormatFlagsNoWrap.
      gdiplus: Support StringFormatNoWrap for GdipMeasureString.

Alexandre Julliard
[email protected]