Wine Announcement

The Wine development release 1.9.18 is now available.

What's new in this release (see below for details):
  - Support for multiple kernel drivers in a single process.
  - More WebServices reader support.
  - Various improvements in joystick support.
  - Some more work towards the Direct3D command stream.
  - GDI performance improvements.
  - Improved IME window handling.
  - Compatibility fixes in the clipboard support.
  - 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.18 (total 26):

  22461  Microsoft Office 2000 Server Extensions Configuration Wizard 'CFGWIZ.EXE' needs msvcirt.dll?cout@@3Vostream_withassign@@A
  25105  Loading a 3d model with a test program fails
  25352  Videos play upside down in multiple games (Fable: The Lost Chapters, Mob Ties Tokyo, Star Wars Republic Commando, SAS: Secure Tomorrow, Hatsune Miku: Project DIVA)
  32936  SmartMusic 2012/2014 crashes on startup (Core Audio adapter 'PKEY_DeviceInterface_FriendlyName' property not supported)
  34056  Multiple applications have a problem with typing Chinese/Japanese with IME (Nabeta Jisho for Japanese, YY and Netease POPO for Chinese)
  35404  Spartan demo: no label on main menu icons
  35892  sdb2xml (.NET 2.0 app) crashes on unimplemented function apphelp.dll.SdbGetAppPatchDir
  39672  Folder names not clickable
  40106  ntdll:info regression
  40580  TASCAM US-16x08 soundcard controller crashes
  40686  win7's ehshell.exe needs KERNEL32.dll.EncodeSystemPointer
  40716  osu! - slightly low-pitched sound when using the ALSA sound driver
  40741  Wings of Vi - black screen on launch
  40953  Necropolis crashes at start (needs native xinput1_3.dll)
  40968  Multiple Games require dxgi_output_FindClosestMatchingMode implementation(Need For Speed: The Run, Magic Duels)
  40997  Fallout 4 needs DXGI_FORMAT_BC7_UNORM_SRGB
  41007  Regression in minimum sound latency / HelBuflen value
  41094  comctl32/treeview: TVS_FULLROWSELECT style does not work
  41105  Tropico 5 (DX11) starts with only a mouse pointer on a black screen
  41117  Insufficient check for sysinfo function breaks build on hurd and kfreebsd
  41118  We Happy Few (UE4) crashes with "D3DRHI->GetFactory()->CreateSwapChain(DXGIDevice,&SwapChainDesc,SwapChain.GetInitReference())"
  41165  MiTeC System Information X needs unimplemented function wlanapi.dll.WlanCloseHandle
  41182  Don't export QT_QPA_PLATFORM
  41189  No Man's Sky fails to start due to a regression in ntdll
  41228  Rendering is messed up on WineD3D8 for Windows
  41246  Office 2010 apps show "Configuring" dialog on first run when installed in new prefix


Changes since 1.9.17:

Akihiro Sagawa (6):
      po: Update Japanese translation.
      winex11: Return more reliable value from X11DRV_MsgWaitForMultipleObjects.
      winex11: Fix log message in process_events().
      winex11: Use proper return type for process_events().
      user32: Create and destroy the default IME window implicitly.
      imm32/tests: Add more default IME window tests with message-only window.

Alexandre Julliard (23):
      server: Add separate requests for opening and closing the clipboard.
      server: Add a separate request to set the clipboard viewer.
      user32: Get rid of the CLIPBOARDINFO structure.
      server: Add a request to return clipboard information.
      user32: Don't allow SetClipboardData if the clipboard is not open.
      user32: Don't disallow delayed rendering even when not the clipboard owner.
      winex11: Don't disallow replacing unowned formats.
      winex11: Don't try to free custom GDI formats at all.
      user32/tests: Add a few more clipboard tests.
      server: Cleanup clipboard information upon window destruction.
      user32/tests: Add some tests for inter-process clipboard viewer notifications.
      user32: Notify the clipboard viewer on close even if we are not the owner.
      server: Add some validation of clipboard window handles.
      server: Implement Add/RemoveClipboardFormatListener.
      user32: Fix InSendMessage return value.
      server: Notify all listeners when the contents of the clipboard have changed.
      server: Add a helper function to validate a window handle.
      server: Avoid some compiler warnings when EWOULDBLOCK == EAGAIN.
      rpcss: Make rpcss a proper service.
      ole32: Cope with receiving WM_RENDERALLFORMATS even when the clipboard is empty.
      server: Add a release_clipboard request, and notify the owner and viewer on release.
      server: Don't release the clipboard owner window when the owner thread terminates.
      user32/tests: Add some tests for synthesized clipboard formats.

Alistair Leslie-Hughes (1):
      inetcomm/tests: Add Attachment tests.

Andrew Eikum (6):
      mshtml: Don't crash creating a URI if we have no document.
      mmdevapi/tests: Fix failure on Vista.
      winhttp: Indicate that WinHttpCrackUrl should return string pointers.
      winhttp: Also pass hostname to jsproxy.
      qcap: Use HRESULT correctly.
      quartz: Implement IClassFactory::LockServer.

André Hentschel (1):
      ntdll: Bump Win 10 version to 14393.

Aric Stewart (3):
      hidclass.sys: Handle IRP_MN_REMOVE_DEVICE.
      include: Fix definition of DRIVER_EXTENSION.
      ntoskrnl.exe: Stub IoInvalidateDeviceRelations.

Austin English (3):
      ntdll: Forward DecodeSystemPointer/EncodeSystemPointer to DecodePointer/EncodePointer.
      apphelp: Add SdbGetAppPatchDir stub.
      msports: Add stub dll.

Bernhard Übelacker (1):
      mlang/tests: Test IMultiLanguage_GetCharsetInfo with malformed charsets.

Bruno Jesus (25):
      dinput: Return the correct error when CreateEffect is not supported.
      dinput: Dump the DIOBJECTDATAFORMAT flags.
      dinput: Get the controller type from the device instance for Linux drivers.
      ntdll: Use a helper to allocate threadpool workers.
      dinput: Dump the force feedback effect before upload.
      dinput: Be more precise when returning effect upload errors.
      dinput: Do not read/write past the struct for old DX versions.
      dinput: Restore effect ID on error due to kernel < 3.14 bug.
      dinput/tests: Use EnumEffects and test a supported effect.
      dinput: Dump the condition effect correctly for 2 array items.
      dinput: Fix calculation of too small periods for periodic effect.
      dinput: Fix infinite effect length handling.
      dinput: Simplify cartesian and fix polar direction calculations.
      dinput: Don't give up if we can't translate the effect envelope.
      msacm32: Add the 16-bit DLL version on acmGetVersion.
      dinput: Simplify condition effect translation.
      dinput: Fix saturation range on condition effects.
      msacm32: Handle invalid use of reserved parameter in acmStreamPrepareHeader.
      msacm32: Handle invalid source length in acmStreamPrepareHeader.
      msacm32: Use a helper to validate stream pointers.
      xinput1_3: Better trace all functions.
      xinput1_3: Better handle input parameters.
      xinput1_3: Stub XInputGetStateEx.
      xinput1_3: Implement XInputGetState using XInputGetStateEx.
      xinput1_3/tests: Cope with XInputGetStateEx not being present by name.

Colin Finck (2):
      include: Add a prototype for RpcBindingServerFromClient.
      rpcrt4: Add a test for RpcBindingServerFromClient (todo_wine).

Daniel Lehman (1):
      ntdll: Set Rip in for longjmp in RtlRestoreContext.

Dmitry Timoshkov (1):
      gdiplus: Reimplement metafile loading using gdi32 instead of IPicture.

Hans Leidekker (16):
      include: Add missing Web Services declarations.
      webservices: Flush the writer first in WsWriteXmlBuffer.
      webservices: Fix the condition to determine when to skip writing a namespace attribute.
      webservices: Add support for writing WS_STRING and WS_XML_STRING values.
      webservices: Ignore unimplemented struct options in the writer.
      webservices: Allow structures to be passed by value in WsWriteType.
      webservices: Add support for optional and nillable fields in the writer.
      webservices/tests: Add a test for WsWriteText.
      webservices: Store standard headers in an XML buffer.
      webservices: Implement WsAddCustomHeader.
      webservices: Implement WsRemoveCustomHeader.
      webservices: Add a stub implementation of WsAbortServiceProxy.
      webservices: Ignore unimplemented struct options in the reader.
      webservices: Implement WsReadEnvelopeStart.
      webservices: Implement WsReadEnvelopeEnd.
      webservices: Implement WsReadBody.

Henri Verbeet (30):
      wined3d: Send resource preloads through the command stream.
      wined3d: Use wined3d_format_calculate_pitch() in wined3d_surface_upload_data().
      ddraw: Rename "wineD3DPalette" to "wined3d_palette".
      ddraw: Rename "wineD3DVertexBuffer" to "wined3d_buffer".
      ddraw: Rename "wineD3DVertexDeclaration" to "wined3d_declaration".
      wined3d: Use wined3d_resource_map() in d3d_vertex_buffer7_Lock().
      ddraw: Use wined3d_resource_unmap() in d3d_vertex_buffer7_Unlock().
      d3d8: Use wined3d_resource_map() in d3d8_vertexbuffer_Lock().
      d3d8: Use wined3d_resource_unmap() in d3d8_vertexbuffer_Unlock().
      d3d8: Use wined3d_resource_map() in d3d8_indexbuffer_Lock().
      d3d8: Use wined3d_resource_unmap() in d3d8_indexbuffer_Unlock().
      d3d9: Use wined3d_resource_map() in d3d9_vertexbuffer_Lock().
      d3d9: Use wined3d_resource_unmap() in d3d9_vertexbuffer_Unlock().
      d3d9: Use wined3d_resource_map() in d3d9_indexbuffer_Lock().
      d3d9: Use wined3d_resource_unmap() in d3d9_indexbuffer_Unlock().
      d3d11: Use wined3d_resource_map() in d3d10_buffer_Map().
      d3d11: Use wined3d_resource_unmap() in d3d10_buffer_Unmap().
      wined3d: Use resource mapping functions in process_vertices_strided().
      ddraw: Use resource mapping functions in d3d_device7_DrawPrimitive().
      ddraw: Use resource mapping functions in d3d_device7_DrawIndexedPrimitive().
      ddraw: Use resource mapping functions in d3d_device7_DrawPrimitiveStrided().
      ddraw: Use resource mapping functions in d3d_device7_DrawIndexedPrimitiveStrided().
      ddraw: Use resource mapping functions in d3d_device7_DrawIndexedPrimitiveVB().
      d3d8: Use resource mapping functions in d3d8_device_DrawPrimitiveUP().
      d3d8: Use resource mapping functions in d3d8_device_DrawIndexedPrimitiveUP().
      d3d9: Use resource mapping functions in d3d9_device_DrawPrimitiveUP().
      d3d9: Use resource mapping functions in d3d9_device_DrawIndexedPrimitiveUP().
      wined3d: Send resource maps through the command stream.
      wined3d: Send resource unmaps through the command stream.
      wined3d: Sanitise resource map flags in wined3d_resource_map().

Hugh McMaster (6):
      reg/tests: Remove embedded BOM tests and add other tests for 'reg import'.
      regedit: Process registry input from stdin.
      reg/tests: Fix copy/paste error in 'import' tests.
      regedit: Remove two 'continue' statements from the end of two 'while' loops.
      regedit: Do not set s_eol to NULL when it will be re-assigned immediately.
      reg/tests: Exclude the null terminating character from MultiByteToWideChar conversion.

Huw D. M. Davies (26):
      d3dx10/tests: Dynamically load d3d10 and skip if it's not present.
      user32: Scale the edge thickness of check boxes drawn with DrawFrameControl().
      user32: Scale the check mark drawn with DrawFrameControl().
      user32: The offset between the button and the text is half the digit width.
      user32: Scale the button size with screen resolution.
      gdi32: Eliminate a masking operation by generating a larger colour table.
      gdi32: Handle the case of a partial source byte separately.
      gdi32: Unroll the start- and end-of-line loops.
      ucrtbase: Add __stdio_common_vswscanf().
      ucrtbase: Add __stdio_common_vfscanf().
      gdi32: Move the outer loop into separate functions for each direction.
      gdi32: Explicitly write out the rops for copy_rect_32().
      gdi32: Explicitly write out the rops for mask_rect_32().
      gdi32: Split out the various offset cases for copy_rect_1() into separate functions.
      gdi32: Explicitly write out the rops for copy_rect_1().
      uxtheme: Use 'ptr' instead of 'wstr' for [out] pointers.
      oleaut32/tests: Don't draw on the desktop window.
      oleaut32/tests: Remove test for broken NT 4.0 behaviour.
      crypt32/tests: Win 10 accepts carriage returns within a base64 four character block.
      comctl32/tests: Move the cursor off the parent window to avoid mouse messages.
      comctl32/tests: Restore the cursor position after moving it.
      user32: EC_USEFONTINFO behaviour depends on whether the font's charset is CJK or not.
      rpcrt4/tests: Remove an unnecessary and confusing message.
      rpcrt4/tests: Mark Win 8.1 behaviour of UuidCreateSequential() as broken.
      ole32: Mask out the flag bit.
      ole32/tests: Update tests to the new channel hook info structure.

Jacek Caban (25):
      wpc: Added stub wpc dll.
      wpc: Added basic tests.
      wpc: Register WindowsParentalControls class.
      wpc: Added class factory stub implementation.
      wpc: Added IWindowsParentalControls stub implementation.
      kernel32: Fixed handling LOCALE_NAME_USER_DEFAULT in GetLocaleInfoEx.
      user32: Introduced ThreadDetach driver entry point.
      winemac.drv: Added ThreadDetach entry point and use it instead of DllMain.
      rpcrt4/tests: Don't load GetUserNameEx dynamically.
      winex11.drv: Added ThreadDetach entry point and use it instead of DllMain.
      rbtree.h: Store parent entry pointer in each entry.
      rbtree.h: Use parent pointer instead of stack in wine_rb_postorder.
      rbtree.h: Rewrite wine_rb_remove to use parent pointers instead of stack.
      rbtree.h: Rewrite wine_rb_put to use parent pointers instead of stack.
      rbtree.h: Get rid of no longer needed wine_rb_stack.
      rbtree.h: Store compare function instead of wine_rb_functions in wine_rb_tree.
      ntoskrnl.exe: Use static initializer for device_drivers.
      winemenubuilder: Use static initalizer for mimeProgidTree and nativeMimeTypes.
      winedevice: Use static initializer for wine_drivers.
      winhttp: Don't perform buffer size tests for components that don't pass buffer in WinHttpCrackUrl.
      d3d10: Removed no loner needed wine_rb_init error handling.
      d3d11: Removed no longer needed wine_rb_init error handling.
      wined3d: Removed no longer needed wine_rb_init error handling.
      d3dcompiler_43: Removed no longer needed wine_rb_init error handling.
      rbtree.h: Pass compare function instead of wine_rb_functions to wine_rb_init.

Józef Kucia (21):
      d3d11: Compare semantic names ignoring case.
      d3d11/tests: Modify existing test to cover case-insensitive input elements matching.
      d3d10core/tests: Modify existing test to cover case-insensitive input elements matching.
      d3d8/tests: Skip test_reset() when device is initially lost.
      d3d8/tests: Add test for regression in IDirect3DDevice8_Reset().
      d3d9/tests: Restore display rotation in test_get_adapter_displaymode_ex().
      d3d9/tests: Add test for IDirect3DDevice9Ex_ResetEx().
      d3d9: Allow passing "mode" to IDirect3DDevice9Ex_ResetEx() iff "Windowed" is FALSE.
      d3d9: Forbid display mode and back buffer mismatch in IDirect3DDevice9Ex_ResetEx().
      dxgi/tests: Extend test for creating swapchain.
      dxgi/tests: Add test for switching display mode to inexact resolution.
      dxgi: Introduce helper functions for converting wined3d_display_mode.
      wined3d: Introduce wined3d_find_closest_matching_adapter_mode().
      dxgi: Implement dxgi_output_FindClosestMatchingMode().
      dxgi/tests: Add test for IDXGIOutput_FindClosestMatchingMode().
      wined3d: Optionally use closest matching mode in wined3d_swapchain_set_fullscreen().
      wined3d: Optionally use closest matching mode in wined3d_swapchain_resize_target().
      d3d8/tests: Prefer higher resolutions in test_reset().
      dxgi: Update swapchain fullscreen state when state change is successful.
      dxgi: Release target output when releasing swapchain.

Ken Thomases (2):
      winemac: Trace when a window's per-pixel-alpha setting changes.
      winemac: Set windows to transparent until they have content to draw, to reduce flicker.

Keno Fischer (2):
      ntdll: Tolerate null handle in DeregisterWait.
      kernel32/tests: Improve tests for pUnregisterWait(0).

Kimmo Myllyvirta (4):
      wined3d: Add support for WINED3DFMT_BC7_UNORM format.
      wined3d: Add support for WINED3DFMT_BC6H_UF16/SF16 formats.
      d3d11: Add tests for WINED3DFMT_BC7_UNORM format.
      d3d11: Add tests for WINED3DFMT_BC6H_UF16/SF16 formats.

Marcus Meissner (1):
      winemenubuilder: Avoid double free (Coverity).

Max Qian (8):
      api-ms-win-core-job-l1-1-0: Add dll.
      api-ms-win-core-job-l2-1-0: Add dll.
      api-ms-win-core-namespace-l1-1-0: Add dll.
      api-ms-win-core-normalization-l1-1-0: Add dll.
      api-ms-win-core-string-obsolete-l1-1-0: Add dll.
      api-ms-win-core-toolhelp-l1-1-0: Add dll.
      api-ms-win-eventlog-legacy-l1-1-0: Add dll.
      api-ms-win-shell-shellfolders-l1-1-0: Add dll.

Michael Gilbert (1):
      ntdll: Add missing stdint.h include for kfreebsd architectures.

Michael Müller (2):
      d3d11: Fix calculation of array size for 1D textures.
      d3d11: Correctly print unhandled bind flags in wined3d_usage_from_d3d11.

Michael Stefaniuc (2):
      dmusic: Avoid using the COM method implementations directly.
      dmime: Avoid using the COM method implementations directly.

Nikolay Sivov (29):
      comctl32/treeview: Fill full row for TVS_FULLROWSELECT style.
      include: Added some of newer Common Controls definitions.
      dinput: Explicitly check for -1 as open() failure code.
      hidclass: Fix handle leak on error path (Coverity).
      oleaut32: Keep most of typeinfo attributes in TYPEATTR structure.
      include: Fix facility id for d3d10 HRESULTs.
      mscoree: Return pointer to interface, not implementation.
      oleaut32: Support querying for ITypeComp from ITypeInfo.
      oleaut32: Fix AddFuncDesc() to ignore scodes array length when NULL array pointer is passed.
      oleaut32: Added PSTypeComp to DllGetClassObject.
      oleaut32: Implement ITypeComp::Bind() proxy/stub.
      oleaut32: Implement IClassFactory::QueryInterface() for StdFont object.
      urlmon: Added proxy/stubs for IBindHost.
      dwrite: Fail stream creation on file mapping failure.
      dwrite/tests: Remove unnecessary font face creation.
      shell32: Use interface pointer instead of implementation one.
      winegstreamer: Remove some casts that are not needed.
      msdaps: Added AddRefAccessor() proxy/stub.
      oleaut32: Added proxy/stub for BindType.
      include: Updated CAL_* info defines.
      kernel32: Map from CAL_* constants to LOCALE_*.
      amstream: Remove some casts.
      msctf/tests: Return interface pointers instead of pointers to impl structure.
      netcfgx: Return pointer to interface.
      msimtf: Return interface pointers.
      dxgi: Use texture pointer instead of resource pointer for DXGI surface.
      d3dx10/tests: Basic tests for async loaders.
      wined3d: Add texture flag to indicate GetDC() capability.
      quartz: Remove some interface pointer casts.

Patrick Rudolph (1):
      wined3d: Handle WINED3DFMT_FLAG_BROKEN_PITCH in wined3d_format_calculate_size().

Piotr Caban (8):
      ntdll: Remove no longer accessible TEB frames in RtlRestoreContext.
      include: Add msvcrt/fpieee.h header.
      msvcrt: Add _fpieee_flt stub.
      msvcrt: Support fdiv m64fp in i386 _fpieee_flt.
      msvcr90: Add _fpieee_flt tests.
      winemac.drv: Fix setting Cocoa focus when window is shown by other thread.
      ntdll: Don't incorrectly overwrite orig_context in call_stack_handlers.
      user32: Fix DefWindowProc behavior on WM_NCRBUTTONDOWN message.

Ruslan Kabatsayev (1):
      wined3d: Initialise p_wglGetPixelFormat when USE_WIN32_OPENGL is defined.

Sebastian Lackner (29):
      ws2_32/tests: Add basic tests for async messages.
      ws2_32: Do not spawn a separate thread for each async task.
      ntdll/tests: Use longer waits to reduce risk of random failures on the testbot.
      ntdll: Allow to release threadpool objects while waiting for group.
      ntdll/tests: Add tests for releasing threadpool objects during TpReleaseCleanupGroupMembers.
      ntdll: Call group cancel callback with the correct arguments.
      ntdll: Group cancel callbacks should be executed after waiting for pending callbacks.
      ntdll: Do not call group cancel callback for finished simple callbacks.
      services: Remove synchronization for CloseThreadpoolCleanupGroupMembers.
      shell32: Use the correct memory allocation function in RecycleBin_GetDisplayNameOf.
      ntoskrnl.exe: Implement ZwLoadDriver and ZwUnloadDriver based on services API.
      winedevice: Add support for loading/unloading drivers asynchronously.
      kernel32/tests: Add a missing linebreak to an ok() message.
      winedevice: Avoid memory leak when driver cannot be unloaded.
      shell32: Remove some unused static inline functions.
      shell32: Remove __SHFreeAndNil macro.
      services/tests: Add test for passing arguments to a service.
      advapi32: Unify service startup and control handling.
      services: Do not create environment block before first service startup.
      services: Add a separate winedevice service for each kernel driver.
      services: Load kernel drivers with same load order group into a single process.
      webservices: Fix handling of duplicate headers in WsAddCustomHeader.
      webservices: Fix handling of duplicate headers in WsRemoveCustomHeader.
      webservices: Fix invalid memory access in remove_header.
      wintrust/tests: Fix test for pfnAddSgnr2Chain.
      schedsvc: Avoid deadlock when scheduler service starts rpcss.
      ntoskrnl.exe: Use the same timeout for service startup like in other wine modules.
      ntdll: Simplify RtlFormatCurrentUserKeyPath using GetCurrentThreadEffectiveToken.
      user32: Do not create IME window for HWND_MESSAGE windows.

Stefan Dösinger (8):
      ddraw/tests: Move IDirect3DViewport::TransformVertices tests to ddraw1.c.
      ddraw: Copy extra vertex data in viewport::TransformVertices.
      ddraw: Fix offscreen flag handling in TransformVertices.
      ddraw: Validate the input data in TransformVertices.
      ddraw/tests: Extend TransformVertices invalid data tests.
      ddraw/tests: Make the vec parameter of compare_vec4 const.
      ddraw/tests: Test matrices in TransformVertices.
      ddraw/tests: Port test_transform_vertices to ddraw2 and ddraw4.

Vincent Povirk (1):
      gdiplus: Copy remap tables when cloning an ImageAttributes.

Alexandre Julliard