Wine Announcement

The Wine development release 7.12 is now available.

What's new in this release:
  - Theming support for Qt5 applications.
  - Bundled vkd3d upgraded to version 1.4.
  - Improved effect support in Direct2D.
  - QWORD support in registry tools.
  - 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.12 (total 13):

  49501  Star Citizen: No mic input audio (used for voip)
  49633  StarCitizen launcher crashes on start with a winmm error
  52475  Shogun Total War 2 crashes on start up. (Main Application.)
  52586  Approach (Smart Suite) crashes when trying to print to cups-pdf
  52729  Argentum 20 RPG Launcher has graphical glitches
  53049  Incorrect display of selected buttons in Light theme.
  53066  Wireshark shows black rectangle on various places if light theme is enabled
  53156  MetaTrader4 stopped working properly with wine 7.10
  53169  Rich edit control becomes unstable or trips assertion after ITextRange::SetFont is called
  53170  Rich edit control becomes unstable or trips assertion after changing TextFont properties
  53180  aria2 needs QueryContextAttributes(SECPKG_ATTR_CIPHER_INFO) to return a valid version
  53201  The 32-bit evr:evr crashes almost systematically on the TestBot's Wine VMs
  53235  The 32-bit mfplat:mfplat crashes on the TestBot debian11 VM


Changes since 7.11:

Alex Henrie (1):
      shell32/tests: Add tests for Program Manager name sanitization.

Alexandre Julliard (41):
      include: Add a number of 64-bit interlocked functions.
      vkd3d: Import upstream release 1.4.
      make_unicode: Make support of registry values more generic.
      make_unicode: Generate the time zone registry keys.
      make_unicode: Add a table of downloaded files and their URLs.
      make_unicode: Verify checksums of downloaded files.
      makefiles: Never install external libraries.
      d3dcompiler: Remove todo_wine from tests that succeed now.
      msvcrt: Move the strncpy_s() implementation to string.c.
      msvcrt: Unify the strncpy_s() and wcsncpy_s() implementations.
      msvcrt: Unify the strncat_s() and wcsncat_s() implementations.
      cabinet: Make sure the cabinet file name doesn't end with a backslash.
      ntdll/tests: Add some tests for trailing slashes in paths.
      ntdll: Fix returned status code for non-directory in path.
      ntdll: Fix returned status code for paths with a trailing slash.
      makefiles: Use the defined external lib variables also when building the libs themselves.
      makefiles: Add separate variables for Unix flags and libraries.
      ntdll: Add a few more isw* functions.
      ntdll: Add strcpy_s and wcscpy_s.
      ntdll: Add strcat_s and wcscat_s.
      ntdll: Add strncpy_s and wcsncpy_s.
      ntdll: Add strncat_s and wcsncat_s.
      ntdll: Add strtok_s and wcstok_s.
      ntdll: Add strlwr_s and wcslwr_s.
      ntdll: Add strupr_s and wcsupr_s.
      ntdll: Add memcpy_s and memmove_s.
      ntdll: Add _wcstoi64.
      ntdll: Add _wcstoui64.
      ntdll: Add _ui64tow_s.
      ntdll: Add _i64tow_s.
      ntdll: Add _ui64toa_s.
      ntdll: Add _i64toa_s.
      ntdll: Add _wsplitpath_s.
      ntdll: Add _splitpath_s.
      ntdll: Add _wmakepath_s.
      ntdll: Add _makepath_s.
      ntdll: Add qsort_s.
      ntdll: Add bsearch_s.
      ntdll: Add _vscprintf and _vscwprintf.
      ntdll: Add _ftol2 and _ftol2_sse.
      ntdll: Add atan2.

Alistair Leslie-Hughes (1):
      d3drm: Return S_OK from IDirect3DRMMeshBuilder3::Optimize().

Andrew Eikum (1):
      maintainers: Remove myself as maintainer.

Arkadiusz Hiler (4):
      mshtml: Enable CSS grid layout.
      win32u: Don't report cloned monitors in EnumDisplayMonitors().
      winepulse.drv: Set device path for all devices.
      winealsa.drv: Set device path for all devices.

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

Bhavesh Davda (1):
      wined3d: Add GPU information for NVIDIA Ampere A10 and AMD Radeon Pro V620 GPUs.

Biswapriyo Nath (2):
      include: Add IDXGIInfoQueue declaration in dxgidebug.idl.
      include: Add IDXGIDebug1 declaration in dxgidebug.idl.

Brendan Shanks (7):
      ntdll: Add zero_bits parameter to virtual_map_builtin_module.
      ntdll: Add zero_bits parameter to open_builtin_pe_file.
      ntdll: Add zero_bits parameter to find_builtin_dll.
      ntdll: Add zero_bits parameter to load_builtin.
      wbemprox: Use return length from NtQuerySystemInformationEx().
      ntdll: Use +threadname channel for thread rename exceptions.
      ntdll: Use +threadname channel for SetThreadDescription().

Claire Girka (1):
      mmdevapi: Override product strings for DualSense controller audio devices.

Connor McAdams (1):
      uiautomationcore: Initialize VARIANT in test_uia_prov_from_acc_properties() (Coverity).

Daniel Lehman (1):
      include: Add _tcsto[u]ll declarations.

David Curtiss (1):
      ws2_32: Allow getsockname after AcceptEx.

David Kahurani (3):
      xmllite/reader: Avoid memory leak on error path.
      xmllite/writer: Handle possible memory allocation failures.
      xmllite/writer: Fix typo in a comment.

Dmitry Timoshkov (1):
      comctl32/listview: Add partial support for LVM_SETBKIMAGE.

Eric Pouech (9):
      winedump: Explore a bit more TPI hash elements.
      dbghelp: Rely on first/last type index from type header.
      mscvpdb.h: Redefine property with bitfields.
      dbghelp: Clearly separate the type loading into two passes.
      dbghelp: Preserve PDB's partial order for types of same name.
      dbghelp: Use remap table from PDB hash stream.
      winedbg: No longer hide current WineDbg process from 'info proc'.
      dbghelp/msc: Support LF_INDEX* in enumeration type definition.
      d3d10core: Enable compilation with long types.

Floris Renaud (1):
      po: Update Dutch translation.

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

Giovanni Mascellani (5):
      mfplat/buffer: Fix size for IMC2/IMC4 buffers with odd height.
      mfplat/tests: Use a more unique pattern when testing image formats.
      mfplat/buffer: Fix the image copy function for IMC2/IMC4 buffers with odd height.
      mfplat/buffer: Deduplicate common code between Lock2D() and Lock2DSize().
      mfplat/tests: Remove duplicated tests.

Hans Leidekker (5):
      include: Move SECPKG_ATTR defines to a new header and add missing definitions.
      secur32: Implement SECPKG_ATTR_CIPHER_INFO.
      winhttp: Remove assertion that is no longer valid in Windows 10.
      wininet: Remove assertion that is no longer valid in Windows 10.
      secur32: Return a SECBUFFER_MISSING buffer from the handshake if the input message is incomplete.

Henri Verbeet (1):
      wined3d: Restore the vkd3d-shader version TRACE.

Hugh McMaster (3):
      regedit: Pass correct data size when adding a new value via the GUI.
      regedit: Use correct printf specifier for UINT64 (QWORD) values.
      regedit: Allow renaming of values in root keys.

Huw D. M. Davies (5):
      iphlpapi/tests: Allow the route's age to differ by one second.
      nsiproxy: Use an unsigned integer for the ICMP handles.
      nsiproxy: Pass a ptr to receive the ICMP handle.
      iphlpapi: Don't allocate the IO status block on the stack.
      wow64: Report the correct size for SystemLogicalProcessorInformationEx.

Jacek Caban (21):
      win32u: Move default key messages implementation from user32.
      win32u: Move WM_APPCOMMAND implementation from user32.
      win32u: Move WM_WINDOWPOSCHANGED implementation from user32.
      win32u: Move default WM_CTL* window message implementation from user32.
      win32u: Move WM_PRINT implementation from user32.
      win32u: Move more default window messages implementation from user32.
      win32u: Move WM_SHOWWINDOW implementation from user32.
      win32u: Move WM_GETTEXTLENGTH implementation from user32.
      win32u: Move WM_GETTEXT implementation from user32.
      win32u: Move get_menu_item_info implementation from user32.
      user32: Reimplement GetMenuStringA on top of NtUserThunkedMenuItemInfo.
      user32: Reimplement GetMenuStringW on top of NtUserThunkedMenuItemInfo.
      win32u: Move GetMenuItemID implementation from user32.
      user32: Reimplement SetMenuItemBitmaps on top of NtUserThunkedMenuItemInfo.
      win32u: Move CheckMenuRadioItem implementation from user32.
      user32: Use NtUserThunkedMenuItemInfo for GetSubMenu implementation.
      win32u: Move GetMenuDefaultItem implementation from user32.
      user32: Use IsMenu in MENU_mnu2mnuii.
      win32u: Move NtUserGetSystemMenu implementation from user32.
      win32u: Move menu object declarations to menu.c.
      user32: Remove no longer needed helpers.

Jactry Zeng (1):
      include: Add definition of ScriptPlaceOpenType().

Jinoh Kang (10):
      winedbg: Fix typos in manpage.
      riched20: Commit and wrap paragraphs after changing text properties.
      ntdll/tests: Add more tests for \Device\NamedPipe\ root directory.
      iphlpapi/tests: Add tests for GetBestInterface.
      iphlpapi/tests: Add tests for GetBestRoute.
      iphlpapi/tests: Add tests for GetBestInterfaceEx.
      iphlpapi/tests: Factor out interface identifier conversion with invalid parameters.
      iphlpapi/tests: Add more tests for interface identifier conversion failure.
      winedbg: Clarify options specific to GDB proxy mode.
      windowscodecs: Fix non-zero alpha detection in ImagingFactory_CreateBitmapFromHICON.

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

Nikolay Sivov (33):
      d2d1: Use CRT memory allocation functions.
      d2d1/effect: Forward color context methods to corresponding device context.
      d2d1/effect: Add LoadPixelShader().
      d2d1/effect: Add LoadComputeShader().
      d2d1/effect: Add CheckFeatureSupport().
      d2d1/effect: Move effect instance creation to the device context.
      d3d11: Remove null dxgi object checks.
      d2d1: Implement IsBufferPrecisionSupported().
      d2d1/effect: Forward IsBufferPrecisionSupported() to corresponding device context.
      regedit: Add support for REG_QWORD type.
      regedit: Remove unnecessary string conversion when modifying REG_DWORD value.
      d2d1/effect: Reserve a buffer for property values.
      d2d1/effect: Set property index.
      d2d1: Move effect object creation to effect.c.
      d2d1/effect: Set initial value for uint32 properties.
      d2d1/effect: Handle initial values for D2D1_PROPERTY_TYPE_BOOL.
      d2d1/effect: Create effect instance properties from builtin effect description.
      d2d1/effect: Initial implementation of property access methods.
      d2d1/effect: Add D2D1_PROPERTY_CACHED property.
      d2d1/effect: Mark most of system properties as read-only.
      d2d1/effect: Implement custom effects creation.
      d2d1/effect: Mark custom properties as writable.
      d2d1/effect: Use property binding methods.
      d2d1/effect: Use known names for automatically added properties.
      d2d1/effect: Add D2D1_PROPERTY_PRECISION property.
      d2d1/tests: Enable effect context tests on Wine.
      reg: Add REG_QWORD support to 'add'.
      ntdll/tests: Add some tests for NtRenameKey().
      advapi32/tests: Add some tests for RegRenameKey().
      ntdll: Implement NtRenameKey().
      advapi32: Implement RegRenameKey().
      d2d1/effect: Initial implementation of subproperties.
      d2d1/tests: Add some tests for enum property structure.

Paul Gofman (8):
      winex11.drv: Store wgl_drawable instead of GLX drawable in wgl_pbuffer.
      winex11.drv: Destroy GLX pbuffer when destroying drawable.
      nsiproxy.sys: Strip trailing end of line for iface name on Linux.
      iphlpapi: Correctly index dynamic data array.
      iphlpapi: Sort by adapter index first in GetIpNetTable().
      opengl32: Prioritize stencil check over depth check in wglChoosePixelFormat().
      opengl32/tests: Add more tests for ChoosePixelFormat().
      nsiproxy.sys: Add static ARP entries which are always present on Windows.

Robert Wilhelm (1):
      vbscript: Use return_null in more places.

Rémi Bernon (11):
      winebus.sys: Move bus_event list entry to an internal structure.
      winebus.sys: Use UINT instead of enum and UINT64 instead of unix_device pointer.
      mf/tests: Add more consistent reference count checks.
      mf/tests: Add some missing IMFActivate_ShutdownObject calls.
      mf: Avoid leaking nodes in IMFTopoLoader_Load.
      mf: Release video renderer services before re-initializing.
      mf: Uninitialize renderer before creating mixer and presenter.
      winex11.drv: Rename display settings handlers to settings_handler.
      winex11.drv: Use nameless structs and unions in settings.c.
      winex11.drv: Merge settings.c into display.c.
      winex11.drv: Avoid requesting current mode in X11DRV_desktop_get_modes.

Stefan Dösinger (1):
      winecfg: Support color profiles larger than MAX_PATH chars.

Zebediah Figura (24):
      d3d11/tests: Add tests for D3D11_FORMAT_SUPPORT_BLENDABLE.
      wined3d: Add Vulkan format information for WINED3DFMT_B5G6R5_UNORM.
      wined3d: Retrieve caps from both WINED3D_GL_RES_TYPE_TEX_2D and WINED3D_GL_RES_TYPE_RB for 2D textures in wined3d_check_device_format().
      win32u: Move process_rawinput_message() from user32.
      win32u: Move raw input thread data allocation from user32.
      win32u: Use syscall interface for NtUserGetRawInputData.
      win32u: Use syscall interface for NtUserGetRawInputBuffer.
      dnsapi: Clarify that Windows does not implement DnsQueryConfig(DnsConfigSearchList).
      dnsapi: ntdll_umbstowcs() deals in characters, not bytes.
      dnsapi: Return a double-null-terminated string from DnsQueryConfig(DnsConfigSearchList).
      ntdll: Add some documentation for ntdll_umbstowcs() and ntdll_wcstoumbs().
      ntdll/tests: Fix test_user_apc() on i386.
      ntdll/tests: Fix test_user_apc() on Windows < 7.
      ntdll/tests: Test setting the return value via alertable NtContinue().
      win32u: Move NtUserRegisterRawInputDevices from user32.
      win32u: Move NtUserGetRegisteredRawInputDevices from user32.
      win32u: Move raw input device list management from user32.
      user32: Merge rawinput.c into input.c.
      wineusb.sys: Move the libusb_cancel_transfer() call to a new Unix library.
      wineusb.sys: Cache members of the device descriptor in the usb_device structure.
      wineusb.sys: Do not store a reference to the libusb device in the usb_device structure.
      wineusb.sys: Create a separate unix_device struct to wrap the libusb device handle.

Zhiyi Zhang (49):
      uxtheme: Support parsing more button parts and states.
      uxtheme: Support parsing more clock states.
      uxtheme: Support parsing more combobox parts and states.
      uxtheme: Support parsing more edit parts and states.
      uxtheme: Support parsing more header parts and states.
      comctl32/toolbar: Add support for TBCDRF_NOBACKGROUND.
      comctl32/tests: Test that themed toolbar buttons don't use pattern brushes to draw checked background.
      comctl32/toolbar: Don't use pattern brushes to draw checked background.
      uxtheme: Support parsing more listview parts and states.
      uxtheme: Support parsing navigation class.
      uxtheme: Support parsing more rebar parts and states.
      uxtheme: Support parsing more scrollbar parts and states.
      uxtheme: Support parsing more start panel parts and states.
      uxtheme: Support parsing more tab parts.
      uxtheme: Support parsing taskdialog class.
      uxtheme: Support parsing more treeview parts and states.
      uxtheme: Support parsing more toolbar parts and states.
      uxtheme: Support parsing more tooltip parts and states.
      uxtheme: Support parsing more window parts and states.
      uxtheme/tests: Test that DrawThemeBackgroundEx() is at ordinal 47.
      uxtheme: Place DrawThemeBackgroundEx() at ordinal 47.
      uxtheme: Test DrawThemeBackgroundEx() alpha channel handling.
      uxtheme: Do not transfer glyph alpha values when drawing opaque background.
      uxtheme/tests: Add GetThemeBackgroundRegion() tests.
      uxtheme: Handle BT_NONE in GetThemeBackgroundRegion().
      light.msstyles: Add Vista+ button parts.
      light.msstyles: Add Vista+ combobox parts.
      light.msstyles: Add Vista+ edit parts.
      light.msstyles: Add Explorer::TreeView subclass.
      light.msstyles: Add Vista+ header parts.
      light.msstyles: Add Vista+ listview parts.
      light.msstyles: Add Vista+ menu parts.
      light.msstyles: Add navigation class.
      light.msstyles: Add Vista+ rebar parts.
      light.msstyles: Add Vista+ scrollbar parts.
      light.msstyles: Add Vista+ spin parts.
      uxtheme/tests: Add dialog procedure message tests.
      uxtheme: Avoid calling application dialog procedures repeatedly.
      light.msstyles: Add Vista+ tab parts.
      light.msstyles: Add taskdialog class.
      light.msstyles: Add Vista+ toolbar parts.
      light.msstyles: Add Vista+ tooltip parts.
      light.msstyles: Add Vista+ trackbar parts.
      light.msstyles: Add window parts.
      evr: Release buffer after adding it to sample.
      evr/tests: Fix resource leaks.
      d2d1/tests: Fix resource leaks.
      mfplat/tests: Fix resource leaks.
      winex11.drv: Use a global Vulkan instance in X11DRV_D3DKMTOpenAdapterFromLuid().

Ziqing Hui (8):
      d2d1: Partially implement RegisterEffectFromStream().
      d2d1: Implement property parsing for RegisterEffectFromStream().
      d2d1: Implement UnregisterEffect().
      d2d1/effect: Create implementation instance for the effect object.
      d2d1/effect: Add a transform graph stub.
      d2d1/tests: Add tests for system properties attributes.
      d2d1/tests: Add tests for GetPropertyCount().
      d2d1/tests: Test value size checking for custom properties.

Alexandre Julliard