Wine Announcement

The Wine development release 1.9.17 is now available.

What's new in this release (see below for details):
  - Better exception handling on 64-bit.
  - Various improvements in joystick support.
  - Some more stream support in the C++ runtime.
  - Font embedding improvements.
  - More metafile support in GDI+.
  - 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 1.9.17 (total 53):

  13272  Scrapland crashes on startup due to IDirectDrawStreamSample::GetSurface method stub
  15824  Microsoft Chat's comic mode graphical glitches
  18018  Gun Metal is unresponsive to joystick
  18095  VisualFEA's Toolbar is broken (does no line wrapping)
  20080  Perfect Cherry Blossom controls go crazy
  22491  Total Commander: Pressing the "Program information" button opens multiple windows instead of just one
  26365  Geneforge 1 - text gets cut away
  26762  Shadow Vault has display errors
  29961  ADO.NET query on a Jet database fails.
  30844  VirtualDJ Home Free crashes after sitting idle for a few minutes.
  31693  CAPCOM games using gamepad start with axes X/Y pressed up/left
  32362  Multiple DirectX9 games need D3D11CreateDevice implementation with D3D_FEATURE_LEVEL_9_x support (Ghost Recon: Future Soldier)
  32774  Multiple games (Lucius, X Rebirth) don't expect blending to be enabled by RS_EDGEANTIALIAS
  34281  PlotSoft PDFill 10 fails on startup, reports 'No Fonts found under: C:\\windows\\Fonts' (at least one font name in registry must contain 'truetype' token)
  34286  dinput doesn't report DIDOI_ASPECT* for joystick axes
  36421  valgrind shows some leaks in oledb32/tests/database.c
  36625  can't set text background color in richedit
  36850  Fury 3 does not recognize Gamepad/Joystick
  36859  Don't Starve 2.4.0 does not start: Missing Shader 'shaders/font.ksh'.
  37518  Huge Drop Performance Alan Wake, Alan Wake American Nightmare, Shadow Warrior 2013
  37847  Shantae - Risky's Revenge has glitchy graphics
  37954  Test application using old MSVC++ iostream library crashes on startup ('msvcirt.??0ostrstream@@QAE@XZ' takes one argument)
  38276  IsDialogMessage(NULL,...) must always return FALSE
  38726  valgrind shows uninitialized memory in qcap/tests/smartteefilter.c
  39506  King Arthur II demo crashes with unimplemented function d3dx10_43.dll.D3DX10CreateEffectPoolFromFileW
  39541  Rollercoaster Tycoon - X Error of failed request:  BadValue (integer parameter out of range for operation)
  40384  dinput8:dinput regression caused by new compiler
  40385  usp10:usp10 regression caused by new cross-compiler
  40411  Regedit.exe /e only exports HKLM
  40665  'INFINITY' undeclared (In function 'test_effect_preshader_ops')
  40710  Multiple games crashes with unimplemented function d3dx11_43.dll.D3DX11CreateTextureFromMemory
  40846  Dead by Daylight: Crash on start, needs D3DX11CompileFromFileW
  40848  S.T.A.L.K.E.R. Call of Pripyat Benchmark needs d3dx10_43.dll.D3DX10CreateDeviceAndSwapChain
  40989  Adventure Lamp needs ntdll.NtSuspendProcess
  41002  Worms 2 (GOG version) fails to start, crashes with a Visual C++ runtime error
  41025  Worms 2 in-game audio no longer works
  41061  Unimplemented function msvcp140.dll._Mtx_init_in_situ needed by
  41066  Unhandled page fault in RtlWow64EnableFsRedirectionEx when passed bad *old_value pointer
  41067  Spellforce 2 - Demons of the Past needs d3dx9_34.dll.D3DXFillVolumeTextureTX
  41072  GOG Galaxy fails to start without setting ucrtbase to (native, builtin)
  41074  Unimplemented function msvcp140.dll.__crtInitializeCriticalSectionEx needed by
  41078  Unimplemented function msvcp140.dll.__crtCreateEventExW needed by
  41079  Hauppauge Capture crashes on unimplemented function cfgmgr32.dll.CM_Get_Version
  41084  Unimplemented function msvcp140.dll.__crtCreateSemaphoreExW needed by
  41088  Bug on Startup Buhl Tax2016 on Wine Windows7
  41089  Regression bug: E-Sword Search now showing a black dialog.
  41103  Fails to parse Extended Properties since it has quotes around its value.
  41109  8-bit Armies launches with a very small window
  41111  CPU-Z driver needs hal.dll.WRITE_PORT_UCHAR
  41125  unimplemented function inetcomm.dll.MimeOleObjectFromMoniker
  41128  Art of Murder: Hunt for the Puppeteer (AoM: Cards of Destiny) doesn't stretch fullscreen properly
  41132  Specific font files can cause Steam to crash unexpectedly
  41140  gcc6: comctl32 build warnings


Changes since 1.9.16:

Aaryaman Vasishta (3):
      d3drm: Store reference to render target in IDirect3DRM*::CreateDeviceFromD3D.
      d3drm: Implement IDirect3DRMFrame*::GetScene.
      d3drm: Implement IDirect3DRMViewport*::Clear.

Alexander Morozov (1):
      ntoskrnl.exe: Add stub for ObDereferenceObject.

Alexandre Julliard (10):
      regedit: Don't die if we fail to open a key during exporting.
      reg/tests: Avoid non-portable Unicode chars.
      ole32/tests: Make the clipboard test more strict and remove Win9x compatibility cruft.
      user32/tests: Add tests for clipboard global memory handles.
      winex11: Don't crash when getting an invalid window in SelectionRequest.
      user32/tests: Add some cross-process clipboard tests.
      winex11: Correctly free CF_DIB format, and don't free unknown GDI formats.
      user32/tests: Add some tests for GDI clipboard formats.
      winex11: Allocate clipboard data as GMEM_FIXED.
      user32/tests: Disable custom GDI clipboard formats tests on 64-bit.

Alistair Leslie-Hughes (4):
      d3dx11: Add D3DX11CompileFromFileA/W stub.
      d3dx11: Add D3DX11CreateTextureFromMemory stub.
      inetcomm: Add MimeOleObjectFromMoniker stub.
      d3d11: Support D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS in ID3D11Device CheckFeatureSupport.

Andrew Church (1):
      dinput: Report DIDOI_ASPECTPOSITION flag for axes objects.

Andrew Eikum (3):
      user32: Don't always insert menu items during WM_MDISETMENU.
      mmdevapi: Fix some DEVPKEY definitions.
      Revert "dsound: Allow inactive devices to change the primary format.".

Andrey Gusev (2):
      msi: Use debugstr_guid() in TRACE() messages.
      d3dx10: Add D3DX10CreateEffectPoolFromFileA/W stubs.

André Hentschel (6):
      kernel32/tests: Explicitly set SizeOfRawData.
      kernel32/tests: Use SetFilePointer instead of GetFileSize with WriteFile.
      kernel32/tests: Remove superfluous filler definitions.
      ntdll: Implement 64-bit shifts.
      kernel32/tests: Fill in the delay IAT to succeed on Win10.
      hal: Add WRITE_PORT_UCHAR stub.

Aric Stewart (6):
      include: Add declaration for ObReferenceObjectByName.
      winedevice: Remove static driver_obj variable.
      hidclass.sys: Use the PDO instance id for the HID instance id.
      hidclass.sys: Call IoAttachDeviceToDeviceStack when creating HID device.
      hidclass.sys: Do not send IRP_MJ_PNP ioctls.
      hidclass.sys: Do not send IRP_MJ_POWER ioctls.

Austin English (3):
      ntdll: Add NtSuspendProcess stub.
      wlanapi: Add WlanCloseHandle() stub.
      ntdll: Add NtResumeProcess stub.

Benjamin Hodgetts (1):
      wined3d: Add Nvidia 1XXX range to detection list.

Bernhard Übelacker (3):
      usp10/tests: Reserve for InClass a byte for every character in teststr.
      kernel32/tests: Convert fiber back to thread even when IsThreadAFiber is not available.
      msvcrt: Fix strtok_s and _mbstok_s for empty strings.

Bruno Jesus (19):
      odbc32: Upgrade a WARN into ERR when the library is not found.
      dinput: Fix some debug output.
      dinput: Add DirectInput8 device type names to debug.
      dinput/tests: Improve controller debug information.
      dinput: Add support for DIPROP_VIDPID property in Linux js implementation.
      dinput8/tests: Debug device information during enumeration callback.
      winejoystick.drv: Don't assume the first joystick is at the first device on Linux.
      winmm/tests: Enumerate all joystick devices during the test.
      dinput/tests: Test for DIDOI_ASPECTPOSITION on joystick axes.
      dinput: Use a helper to read information files for the js device.
      dinput: Implement GetDeviceInfo(A) using the W version in the js driver.
      dinput: Properly fill the HID information for the controller in the js driver.
      dinput: Implement GetDeviceInfo(A) using the W version in the event driver.
      dinput: Properly fill the HID information for the controller in the event driver.
      dinput: Properly debug DIDEVTYPE_HID in _dump_DIDEVCAPS.
      include: Add DIPROP_PRODUCTNAME and remove duplicate #defines from dinput.h.
      dinput: Use the correct index to remap the axis.
      dinput: Implement DIPROP_PRODUCTNAME in GetProperty.
      dinput: Cope with NULL flags in LinuxInputEffectImpl_GetEffectStatus.

Daniel Lehman (16):
      msvcp140: Implement _Thrd_hardware_concurrency.
      concrt140: Add concrt140 stub.
      msvcp140: Load critical_section functions from concrt140.
      msvcp140: Take _Mtx_t and _Cnd_t directly.
      msvcp140: Add _Mtx_init/destroy_in_situ.
      vcomp140: Add vcomp140 stub.
      msvcp140: Don't redirect _Cnd/Mtx_t to msvcp110.
      msvcp140: Add _Query_perf_[counter|frequency].
      ntdll: Call __finally blocks in __C_specific_handler.
      msvcp140: Forward __ExceptionPtr* to msvcr120.
      msvcp110: Use sentry in istream<>::tellg.
      msvcp110: Use sentry in istream<>::seekg.
      msvcr120: Add forwards for wcstoll and wcstoll_l.
      msvcr120: Add lgamma.
      ucrtbase: Add __stdio_common_vfwscanf.
      kernel32: Add GetNumberFormatEx.

François Gouget (2):
      msi: Make parse_platform() static.
      webservices: A spelling fix for an ERR() message.

Hadrien Boizard (1):
      api-ms-win-core-console-l2-1-0: Add stub dll.

Hans Leidekker (17):
      webservices/tests: Add some tests for WsSetWriterPosition.
      include: Add missing Web Services declarations.
      webservices: Implement WsSetHeader.
      webservices: Also write user supplied headers in WsWriteEnvelopeStart.
      webservices/tests: Add tests for WsSetHeader.
      winhttp: Set required buffer length for all components in WinHttpCrackUrl.
      winhttp: Validate the port number in WinHttpCrackUrl.
      webservices: Write the envelope in WsInitializeMessage.
      webservices: Support WS_STRING values in WsSetHeader.
      webservices: Implement WsRemoveHeader.
      webservices: Add missing channel properties.
      webservices: Implement WS_ADDRESSING_VERSION_TRANSPORT.
      include: Add missing Web Services declarations.
      webservices: Add support for writing GUID values.
      webservices: Validate the handle in channel functions.
      webservices: Implement WsAddMappedHeader.
      webservices: Implement WsRemoveMappedHeader.

Henri Verbeet (5):
      wined3d: Use wined3d_cs_emit_unload_resource() in delete_opengl_contexts().
      wined3d: Use wined3d_cs_emit_unload_resource() in wined3d_texture_update_desc().
      wined3d: Synchronise WINED3D_CS_OP_UNLOAD_RESOURCE resource access.
      wined3d: Synchronise texture LOD updates with the command stream.
      wined3d: Unify resource preloads.

Hugh McMaster (12):
      reg/tests: Add more tests for 'reg import'.
      wineconsole: Add 'ColorTable' support to the registry.
      wineconsole: Replace hard-coded WCUSER_ColorMap with registry color_map.
      server: Get and set the console color table.
      wineconsole: Add 'PopupColors' support to the registry.
      server: Get and set the console pop-up color attributes.
      reg/tests: Add more tests for 'reg import'.
      reg/tests: Add more Unicode tests for 'reg import'.
      kernel32/tests: Add tests for GetConsoleScreenBufferInfoEx.
      kernel32: Implement GetConsoleScreenBufferInfoEx.
      reg: Fix dword conversion on 64-bit operating systems.
      reg: Simplify help handling by removing an if-else if-else block.

Huw D. M. Davies (6):
      ucrtbase: Add support for natural string widths.
      usp10: Free the final page.
      riched20: Update the auto url detection after a StreamIn.
      gdi32: Exponentially grow successive point buffers.
      ntdll/tests: Dump the handle table on failure.
      ntdll/tests: Skip broken SYSTEM_HANDLE_INFORMATION behaviour.

Iván Matellanes (18):
      msvcirt: Add a partial implementation of class ostream_withassign.
      msvcirt: Implement ostream_withassign copy constructor.
      msvcirt/tests: Add tests of ostream_withassign assignment operators.
      msvcp90: Set the correct vtable for basic_iostream_char.
      msvcirt: Add a partial implementation of class istream_withassign.
      msvcirt: Implement istream_withassign copy constructor.
      msvcirt/tests: Add tests of istream_withassign assignment operators.
      msvcirt: Initialize do_lock on ios copy constructor.
      msvcirt/tests: Add some more tests of ostream constructors.
      msvcirt: Add stub for class iostream.
      msvcirt: Implement iostream constructors/destructors.
      msvcirt: Implement iostream assignment operators.
      msvcirt: Simplify some constructors and assignments.
      include/msvcrt: Ensure integer limits are given the correct type.
      msvcirt: Add a partial implementation of class Iostream_init.
      msvcirt: Implement Iostream_init constructor.
      msvcirt: Add predefined streams.
      msvcirt: Implement ios::sync_with_stdio.

Jacek Caban (1):
      wininet: Don't return available data sizes larger than the read buffer.

Jeremy Audiger (1):
      winhttp: Prevent console spamming in get_system_proxy_autoconfig_url.

Joerg Schiermeier (1):
      loader/wine.inf: Correct wrong symlink.

John Sheu (2):
      kernel32/tests: Add loader tests for fiber-local storage.
      kernel32/tests: Add thread tests for fiber-local storage.

Józef Kucia (23):
      wined3d: Silence false FIXME message.
      d3d11/tests: Add test for line antialiasing blending.
      d3d10core/tests: Add test for line antialiasing blending.
      d3d9/tests: Add test for line antialiasing blending.
      d3d8/tests: Add test for edge antialiasing blending.
      wined3d: Introduce gl_blend_from_d3d() helper function.
      ddraw/tests: Add tests for edge antialiasing blending.
      wined3d: Do not enable blending for edge/line antialiasing.
      wined3d: Add few missing formats.
      d3d11/tests: Add initial test for required formats.
      d3d11/tests: Add test for swapchain views.
      d3d11: Add support for feature level 9 shaders.
      d3d11/tests: Add basic test for drawing on feature level 9.
      wined3d: Do not switch display mode when windowed is TRUE.
      d3d9/tests: Add test for regression in IDirect3DDevice9_Reset().
      d3d10core/tests: Add test for swapchain views.
      d3d11/tests: Fix copy-paste error in test_swapchain_views().
      dxgi/tests: Also test IDXGISwapChain_ResizeTarget() in fullscreen with disabled mode switch.
      dxgi: Properly switch to fullscreen mode when creating fullscreen swapchains.
      dxgi/tests: Check fullscreen state in test_create_swapchain().
      d3d11: Remove redundant 'break' statement.
      user32/tests: Add more tests for setting window styles.
      user32: Prevent resetting WS_MINIMIZE through SetWindowLong.

Kenneth Haley (1):
      v4 resend: Riched20: allow setting background text color.

Keno Fischer (2):
      preloader: Add proper CFI instructions to _start functions.
      kernel32: Fix RegisterWaitForSingleObject for console handles.

Matt Robinson (1):
      ntdll: Catch page fault in RtlWow64EnableFsRedirectionEx.

Michael Stefaniuc (17):
      winealsa.drv: Use debugstr_guid() to trace a guid.
      wineoss.drv: Use debugstr_guid() to trace a guid.
      winepulse.drv: Use debugstr_guid() to trace a guid.
      winecoreaudio.drv: Use debugstr_guid() to trace a guid.
      kernel32/tests: Use todo_wine_if().
      kernel32/tests: Remove an identical if / else branch.
      kernel32/tests: Remove another identical if/else branch.
      ole32/tests: Use todo_wine_if().
      quartz: There is no point in tracing the GUID pointer too.
      user32/tests: Remove an identical if/else branch.
      comctl32/tests: Use todo_wine_if().
      ieframe/tests: Use todo_wine_if().
      avifil32: Avoid a cast from a COM object to an iface.
      ole32/tests: Avoid casts from COM objects to ifaces.
      fusion: Avoid using the LPASSEMBLYNAME type.
      mmdevapi: Another use case for todo_wine_if().
      msvcirt/tests: Simplify generating a pointer to address 0x1.

Mingcong Bai (2):
      po: Update Simplified Chinese translation.
      po: Update Simplified Chinese translation.

Nikolay Sivov (37):
      powrprof: Added PowerDeterminePlatformRole() stub.
      comctl32/tests: Basic test for TVS_FULLROWSELECT style bit.
      comctl32/treeview: Fix hot-tracking with TVS_FULLROWSELECT.
      oledb32: Support quoted values in initialisation strings.
      winmm/tests: Fixed a buffer leak (Valgrind).
      winmm: Free device format when closing a device (Valgrind).
      msvcp140: Added __crtCreateEventExW().
      msvcp140: Added __crtGetTickCount64().
      msvcp140: Added __crtCreateSemaphoreExW().
      dwrite/tests: Fix indentation warnings on GCC 6.
      usp10: Better implementation for ScriptGetLogicalWidths().
      scrrun/tests: Fix a warning on GCC 6.
      shell32/tests: Fix indentation warnings on GCC 6.
      user32/tests: Fix indentation warnings on GCC 6.
      wshom.ocx/tests: Fix indentation warning on GCC 6.
      ole32/tests: Fix indentation warning on GCC 6.
      rpcrt4/tests: Fix indentation warning on GCC 6.
      winhttp/tests: Fix indentation warning on GCC 6.
      comctl32/treeview: Fix item dragging and selection for TVS_FULLROWSELECT style.
      mshtml: Formatting change to get rid of warning on GCC 6.
      t2embed: Fix embedding type resolution order.
      setupapi: Added CM_Get_Version().
      t2embed: Fix TTIsEmbeddingEnabled() to properly use otmpFaceName metrics field.
      t2embed: Add some traces for fsType and exclusion list test results.
      shlwapi/tests: Fix indentation warning on GCC 6.
      shell32/tests: Fix indentation warning on GCC 6.
      gdi32: Keep font tables tags defined in one place.
      gdi32: Support special 'ttcf' tag in GetFontData().
      dwrite: Sanitize specified stretch value, valid range is [1, 9].
      dwrite: Handle zero specified weight as normal.
      gdi32: Simplify font table name tracing.
      gdi32: Append "TrueType" suffix to registry key names.
      comctl32/listview: Fix indentation warnings on GCC 6.
      oleaut32/tests: Fix indentation warning on GCC 6.
      msvcirt/tests: Fix indentation warnings on GCC 6.
      strmbase: Fix media type leaks when creating IEnumMediaTypes instance (Valgrind).
      user32: Handle invalid dialog handles in IsDialogMessage().

Nils Kuhnhenn (1):
      winex11.drv: Return default locale in LoadKeyboardLayout stub instead of 0.

Peter Beutner (2):
      kernel32/tests: Add path tests for double delimiters.
      kernel32: Properly handle double delimiters in GetShortPathName/GetLongPathName.

Pierre Schweitzer (5):
      mpr: Implement local name automatic redirection for disks.
      mpr: Implement provider selection given remote name.
      mpr: Implement WNetCancelConnection2W().
      mpr: Implement WNetCancelConnectionA(), WNetCancelConnectionW(), WNetCancelConnection2A().
      mpr: Set the CONNECT_LOCALDRIVE flag in case a local redirection is made on connection.

Piotr Caban (14):
      ntdll: Fix KNONVOLATILE_CONTEXT_POINTERS parameter handling in RtlVirtualUnwind.
      server: Fix loading of IMAGE_OPTIONAL_HEADER.
      msvcrt: Don't set frame to 0 in x86_64 _setjmp.
      msvcrt: Fix parameters conversion in wcsftime function.
      msvcrt: Add support for multibyte characters in _Strftime.
      msvcrt: Add _strftime_l.
      msvcrt: Add wcsftime_l.
      msvcrt: Add _wcreate_locale.
      ntdll: Add support for collided unwinds.
      ntdll: Add support for ExceptionCollidedUnwind return from exception handler.
      ntdll: Call exception handler with correct context.
      ntdll: Add support for exceptions inside termination handlers in __C_specific_handler.
      ntdll: Print fixme message in case of nested exception.
      ntdll: Pass updated context inside dispatch.ContextRecord in call_stack_handlers.

Sebastian Lackner (31):
      vcomp: Prefer builtin version.
      vcomp120: Prefer builtin version.
      vcomp110: Prefer builtin version.
      vcomp100: Prefer builtin version.
      vcomp90: Prefer builtin version.
      services: Preparation to allow arbitrary data in service RPC messages.
      advapi32: Validate received service name.
      services: Implement functionality to transfer extra data when sending service control.
      services: Fix handling of user defined service controls.
      services: Fix leak of process object in process_terminate.
      services: Store process id in the process object.
      services: Unlink process immediately after service stopped.
      services: Ignore error in callback only for ControlService requests.
      services: Remove service_terminate function.
      services: Hold an additional process reference while waiting for startup.
      configure: Explicitly check for sysinfo function.
      dwrite: Fix font stretch name conversion table.
      services: Add a grab_service function.
      advapi32: Simplify RegisterServiceCtrlHandlerExW.
      advapi32: Hold lock while processing service controls.
      advapi32: Hold lock while handling service thread shutdown.
      advapi32: Do not stop service main thread as long as there are still running services.
      services: WaitForSingleObject returns a DWORD result.
      services: Track number of services per process.
      services: Hold startup lock before calling service_start.
      services: Sort autostart services by dwTagId config value.
      services: Use threadpool API instead of custom wait implementation.
      services: Return an error instead of BOOL from process_send_start_message.
      services: Allocate a separate status_changed_event for each service.
      winedevice: Track loaded drivers and update their status on load/unload.
      ntdll: Convert an ERR to a WARN when wait is triggered while destroying threadpool object.

Stefan Dösinger (1):
      ddraw/tests: Skip overlay tests if DWM is on.

Vincent Povirk (12):
      gdiplus: Fix matrix append flag in metafile transform records.
      gdiplus/tests: Add feature for loading emf files.
      gdiplus: Implement recording/playback for MultiplyWorldTransform.
      gdiplus: Implement recording/playback for RotateWorldTransform.
      gdiplus: Implement recording/playback for SetWorldTransform.
      gdiplus: Implement recording/playback for TranslateWorldTransform.
      gdiplus/tests: Test mixing Begin/EndContainer and Save/Restore.
      gdiplus: Fix mismatched use of Begin/EndContainer and Save/RestoreGraphics.
      gdiplus: Add support for containers in metafiles.
      gdiplus/tests: Add test for containers in metafiles.
      gdiplus: Implement playback/recording for SetClipRect.
      gdiplus/tests: Add metafile test for SetClipRect.

Alexandre Julliard