Wine release 5.22
The Wine development release 5.22 is now available.
What's new in this release (see below for details):
- C runtime libraries converted to PE.
- Use fontconfig cache for faster startup.
- Video playback improvements.
- 3DES cipher support.
- Various bug fixes.
The source is available from the following locations:
https://dl.winehq.org/wine/source/5.x/wine-5.22.tar.xz
http://mirrors.ibiblio.org/wine/source/5.x/wine-5.22.tar.xz
Binary packages for various distributions will be available from:
https://www.winehq.org/download
You will find documentation on https://www.winehq.org/documentation
You can also get the current source directly from the git
repository. Check https://www.winehq.org/git 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.22 (total 36):
16991 Cobra 11 Nitro: No video and music at game startup
28210 Rome Total War crash at start
30668 Motocross Madness 2 needs IAMMultiMediaStream::GetState() implementation
32613 Tom Clancy's Rainbow Six: Lockdown crashes after the intro videos (needs DxDiag_SoundDevices device child nodes present)
37396 Multiple applications need "sRGB Color Space Profile.icm" (Asperite, Word 2007, Word 2010)
38014 CCCP Insurgent v2007-01-01 crashes when querying system information via DxDiag
41081 Foldit puzzle 1266 crashes at start up
42731 stack overflow when .bat script variable has more than 256 characters
43513 Ys VI: The Ark of Napishtim - videos are not playing
44884 Call of Duty Modern Warfare Remastered: Crash after splash with error about Memory/Disk space
45421 Need for Russia does not play msvideo movies
45650 chromium 32-bit sandbox expects different syscall thunks depending on Windows version
46429 Multiple games need IV50 codec to play videos (Thief Gold, Thief II: The Metal Age, Commandos 2: Men of Courage)
46478 Wordpad is slow to start with large enough number of fonts in the system
47320 Black Ops 4 Unhandled Exception When Loading gdi32.dll
47374 Thronebreaker: The Witcher Tales rendering is messed up
47846 Age Of Empires III Crash after Intro
48171 Call of Duty: Modern Warfare (2019) exception
48212 Ys: The Oath in Felghana - movies don't play
48505 WinRAR x64 4.x/5.x installer crashes on unimplemented function GDI32.dll.ScriptGetCMap
49238 Oblivion: No sound/music
49376 Light of Altair demo has no text in options menu
49490 Overwatch installer fails with new wine prefix
49526 Anno 1800: Crashes on startup
49546 Titan Quest Anniversary Edition has no text with builtin d3dx9_42
49665 Wine 5.14 won't start, but 5.12 - do!
49844 Cannot create a new file on a mounted fat volume
49907 Fallout New Vegas crashes when leaving Doc Mitchell's house
50046 wineserver persistence after setup of a WINEPREFIX
50084 Wargaming.net Game Center can't install updates since wine 5.19
50101 Ghostrunner has no sound after intro movies when prefix is set to Win10
50110 Elite Dangerous Launcher (wine-5.21): AccessViolationException Protected Memory
50116 ODBC applications fail to create/configure system DSNs with builtin 'odbccp32' (SQLConfigDataSource must remap ODBC_xxx_SYS_DSN values for ConfigDSN)
50135 explorer.exe crashes when UseXRandR and UseXVidMode are specified to be disabled in registry
50140 "Guild Wars 2 Launcher" over time consumes all available memory
50149 Chromium/MS WebView2 depends on TEB->ReservedForOle 'apt_mask' value
----------------------------------------------------------------
Changes since 5.21:
Alex Henrie (2):
urlmon: Remove unused variable has_ipv6.
urlmon: Reimplement canonicalize_ipv6address on top of ntdll functions.
Alexandre Julliard (49):
crypt32: Move the GnuTLS code to a new Unix library.
crypt32: Move the root store initialization to the Unix library.
crypt32: Build with msvcrt.
crypt32: Use wide-character string literals.
crypt32: List allowed characters instead of relying on wctype properties.
wineboot: Fall back to initial hostname if the name lookup fails.
mscms: Implement profile tag functions without relying on liblcms2.
mscms: Move liblcms support to a new Unix library.
mscms: Build with msvcrt.
setupapi: Add a few more dirids.
setupapi: Add an extension to support file copies from module resources.
winebus.sys: Move winebus.inf into the module resources.
winehid.sys: Move winehid.inf into the module resources.
wineusb.sys: Move wineusb.inf into the module resources.
mscms/tests: Avoid depending on the exact Microsoft color profile.
mscms: Install the sRGB color profile.
glu32: No longer load the Unix libGLU.
glu32: Build with msvcrt.
kernelbase: Copy MulDiv() implementation instead of forwarding.
msvcrt: Reimplement _dclass() using musl code.
msvcrt: Reimplement _fpclass().
msvcrt: Reimplement _finite().
msvcrt: Reimplement _isnan().
msvcrt: Reimplement _dsign().
msvcrt: Reimplement _chgsign().
msvcrt: Import _copysign() from musl.
msvcrt: Import fabs() from musl.
msvcrt: Import ilogb() from musl.
msvcrt: Use the global musl copyright notice.
msvcrt: Add floating point classification macros.
msvcrt: Avoid long double type in $I10_OUTPUT().
jscript: Use the standard isfinite() function.
msvcrt: Use the msvcrt math functions internally.
msvcrt: Use the msvcrt allocation functions internally.
msvcrt: Use the msvcrt ctype functions internally.
msvcrt: Use the msvcrt atoi() function internally.
msvcrt: Use the msvcrt string functions internally.
msvcrt: Move math functions to a new Unix library.
msvcrt: Remove obsolete USE_MSVCRT_PREFIX defines.
msvcrt: Enable multi-thread locking by default.
include: Use gcc builtin for HUGE_VAL.
makefiles: Don't add a default crt lib for msvcrt dlls.
makefiles: Allow modules to link to their own import library.
msvcrt: Build with msvcrt headers.
msvcrt/tests: Remove the headers test.
msvcrt: Avoid msvcrt-specific types in the Unix library interface.
msvcrt: Remove some duplicate definitions from msvcrt.h.
msvcrt: Move the fenv_t definition to the public header.
msvcrt: Use the public standard type definitions where possible in msvcrt.h.
Alistair Leslie-Hughes (12):
include: Add interface IGetDataSource.
include: Add ICommandStream interface.
include: Add ICommandProperties interface.
include: Add IConvertType interface.
include: Add ICommandPrepare interface.
include: Add IRowsetChange interface.
include: Add IRowsetUpdate interface.
xaudio2_9: Add version resource.
msi: Correct Query for loading an image.
msado15/tests: Add ADORecordsetConstruction tests.
msado15: Support ADORecordsetConstruction in _Recordset.
msado15: Implement ADORecordsetConstruction get/put Rowset.
Andrew Eikum (1):
mmdevapi: Support older version of the AudioClientProperties structure.
Anton Baskanov (7):
amstream/tests: Add comments to AMDirectDrawStream::CompletionStatus tests.
amstream: Wait for presentation time in AMDirectDrawStream::Receive.
amstream: Implement AMDirectDrawStream::GetTimePerFrame.
amstream: Factor out the common code of MediaStreamFilter seeking tests.
amstream: Implement MediaStreamFilter::IsFormatSupported.
amstream: Implement AMMultiMediaStream::GetState.
amstream: Implement AMMultiMediaStream::GetTime.
Aurimas Fišeras (1):
po: Update Lithuanian translation.
Biswapriyo Nath (6):
include: Add D2D1_PROPERTY enumeration in d2d1_1.idl.
include: Add D2D1_SUBPROPERTY enumeration in d2d1_1.idl.
include: Add D2D1_POINT_DESCRIPTION structure in d2d1_1.idl.
include: Add ID2D1GdiMetafileSink interface in d2d1_1.idl.
include: Add ID2D1GdiMetafile interface in d2d1_1.idl.
include: Add ID2D1PrintControl interface in d2d1_1.idl.
Brendan Shanks (1):
winecoreaudio.drv: Only read 'length' bytes from received MIDIPackets.
Charles Davis (10):
msvcr90/tests: Test _get_current_locale()/setlocale() interaction.
msvcrt: Make locale name string refcounted for C locale.
msvcrt: Share locale names between threadlocinfo instances.
msvcrt: Copy LC_COLLATE codepage between threadlocinfo instances.
msvcrt: Share ctype tables between threadlocinfo instances.
msvcrt: Share lconv data between threadlocinfo instances.
msvcrt: Share __lc_time_data between threadlocinfo instances.
ucrtbase: Sync __lc_time_data definitions.
msvcrt: Swap the threadlocinfo pointers in setlocale().
msvcrt: Increment refcounts for all locale data in _get_current_locale().
Damjan Jovanovic (8):
ntdll: Implement get_thread_times() on FreeBSD.
ntdll: Improve character device type detection on FreeBSD and macOS.
ntdll: Fix wrong return values in get_dir_case_sensitivity_stat().
ntdll: FAT filesystems are called "msdosfs" on FreeBSD >= 5.
ntdll: Msdosfs was case-insensitive since FreeBSD 8 or even earlier.
ntdll: Treat smbfs as case-insensitive on FreeBSD.
ntdll: Document a few other filesystem case-sensitivity cases.
cmd.exe: Increase size of WCMD_HandleTildeModifiers() buffers to MAXSTRING.
Daniel Lehman (3):
tzres: Add Lord Howe Standard Time Zone.
tzres: Add Aus Central W. Standard Time Zone.
wine.inf: Add Dynamic DST for Australian time zones.
David Torok (1):
ntdll: Add NtDebugActiveProcess stub.
Derek Lesho (4):
winegstreamer: Require media source's IMFByteStream to be seekable.
winegstreamer: Implement IMFMediaSource::GetCharacteristics.
winegstreamer: Set MF_PD_DURATION on source's presentation descriptor.
mf/session: Call session_command_complete after NotifyTopology command.
Dmitry Timoshkov (6):
crypt32/tests: Fix test failures under newer Windows versions.
advapi32/tests: Fix compilation with PSDK compiler.
advapi32: Implement LsaGetUserName.
crypt32: Make helper for copying CMSG_CMS_SIGNER_INFO attributes more generic.
crypt32: Add support for CMSG_SIGNER_AUTH_ATTR_PARAM for a being decoded signed message.
crypt32: Add support for CMSG_ENCODED_MESSAGE for a being decoded signed message.
Esme Povirk (5):
windowscodecs: Move jpeg decoding to the unix lib.
windowscodecs: Start interface for unix encoders.
windowscodecs: Move PNG encoding to the unix lib.
windowscodecs: Fix memory leak in common decoder.
windowscodecs: Fix allocation in tiff_decoder_get_metadata_blocks.
François Gouget (5):
cryptnet: Fix the spelling of the x-pkcs7-certificates MIME type.
mshtml: Fix the spelling of the filter attribute.
gdi32/tests: Avoid a D3DKMTOpenAdapterFromHdc() crash on Windows 10 >= 2004.
mmdevapi/tests: Only warn about the console when it is used.
mmdevapi/tests: Work around Initialize() render breakage on Win 10.
Georg Lehmann (1):
winevulkan: Initialize Vulkan in native_vkGetInstanceProcAddrWINE.
Gerald Pfeifer (1):
msvcrt: #include stdarg.h from unixlib.c.
Gijs Vermeulen (2):
sapi: Add stub SpStream object.
sapi: Add stub SpResourceManager object.
Hans Leidekker (1):
odbccp32: Map system DSN requests to user DSN requests in SQLConfigDataSource.
Haoyang Chen (1):
gdi32: Avoid exceeding the actual bitmap height.
Huw D. M. Davies (5):
riched20: Pass a para or run ptr to the char ofs propagation function.
riched20: Use row ptrs in the page up/down handlers.
riched20: Use row and para ptrs in the cursor up/down handler.
riched20: Simplify search for the cell to delete.
riched20: Move the code to clear the cell bottom out of the loop.
Jacek Caban (25):
kernel32/tests: Add more console waiting tests.
server: Support waiting on console input handles.
server: Support waiting on screen buffer handles.
kernelbase: Wait directly on console handles.
server: Remove no longer needed get_console_wait_event request.
kernel32: Allow non-console handles in DuplicateConsoleHandle.
kernel32: Allow non-console handles in CloseConsoleHandle.
conhost/tests: Initialize whole OVERLAPPED struct in fetch_console_output.
conhost: Use console debug channel.
conhost/tests: Silence debug output in child process if std output is a console.
server: Support unbound console input device.
server: Support unbound console output device.
kernel32/tests: Add more unbound console handles tests.
kernelbase: Remove no longer needed console handle handling from create_process_params.
attrib: Use CP_ACP for non-console output encoding.
fsutil: Use CP_ACP for non-console output encoding.
hostname: Use CP_ACP for non-console output encoding.
kernelbase: Move Unicode conversion from WriteConsoleA to conhost.
server: Support writing directly on console handle.
kernel32: Import WriteFile from kernelbase.
makedep: Use short debug file names.
conhost/tests: Add more ReadConsoleA tests.
kernelbase: Move Unicode conversion from ReadConsoleA to conhost.
server: Allow reading directly from console handle.
kernel32: Import ReadFile from kernelbase.
Jeff Smith (4):
user32/tests: Change misleading variable name and type.
user32/tests: Simplification of some message broadcast tests.
user32/tests: Test message broadcast to parented windows.
user32: Only child windows should not receive broadcast messages.
Kevin Puetz (7):
ole32/tests: Fix flaky test in cowait_unmarshal_thread.
widl: Parse attribute custom(guid,expr).
widl: Write ATTR_CUSTOM into typelib.
widl: Allow adding the same custdata GUID multiple times in a typelib.
oleaut32/tests: Cover Get*CustData in test_dump_typelib.
oleaut32: Fix error handling/reporting in TLB_copy_all_custdata.
oleaut32: Load GetVarCustData from MSFT-format typelib.
Liam Middlebrook (1):
winevulkan: Update to VK spec version 1.2.160.
Michael Müller (2):
dxdiagn: Enumerate DirectSound devices and add some basic properties.
dxdiagn: Calling GetChildContainer with an empty string on a leaf container returns the object itself.
Michael Stefaniuc (31):
msidb: Use wide-char string literals.
icinfo: Use wide-char string literals.
start: Use wide-char string literals.
wintab32: Use wide-char string literals.
wineps.drv: Use wide-char string literals.
gdiplus: Use wide-char string literals.
gdi32/uniscribe: Use wide-char string literals.
mscms: Use wide-char string literals.
mscms/tests: Inline a simple string.
hidclass.sys: Use wide-char string literals.
inetcpl.cpl: Trace the actual AutoConfigURL and not the value name.
inetcpl.cpl: Use wide-char string literals.
mstask: Use wide-char string literals.
vbscript: Use wide-char string literals.
kernel32: Use wide-char string literals.
taskschd: Use wide-char string literals.
userenv: Use wide-char string literals.
oleview: Inline WCHAR strings of length 1.
winmm: Use wide-char string literals.
winmm/tests: Use a string literal instead of a char array.
dpnet: Use wide-char string literals.
dxdiagn: Use wide-char string literals.
comctl32: Use wide-char string literals.
riched20: Use wide-char string literals.
riched20: Use wide-char string literals in a struct initialization.
riched20: Use zero terminated wchar strings.
riched20: Use a wchar string literal for the array of neutral chars.
itss: Use wide-char string literals.
itss: Use zero terminated WCHAR strings.
imm32: Use wide-char string literals.
mshtml: Fix spelling of fuchsia.
Nikolay Sivov (61):
gdi32: Merge in Uniscribe functionality.
mf/tests: Add a test for copier buffer handling.
mf/evr: Accept samples when prerolling.
evr/mixer: Reuse full set of type attributes for output types.
evr/mixer: Add partial implementation of sample processing.
evr/presenter: Fix error handling on object creation.
user32: Remove usp10 from delayed imports.
evr/presenter: Create sample allocator on object creation.
evr/presenter: Add a helpe for input processing.
evr/presenter: Notify renderer host about mixer latency.
evr/presenter: Add sample allocator notification callback.
evr/allocator: Call user callback when sample is returned to the pool.
mf/evr: Handle sample requests from the mixer.
mf/evr: Handle user events from the presenter.
mf/session: Provide quality manager with presentation clock.
mf/session: Notify quality manager when setting new topology.
mf/session: Notify quality manager on input/output processing.
mf/session: Forward MEQualityNotify event to the quality manager.
oledb32: Use wide-char string literals.
evr/allocator: Fix released sample pointer check.
evr/allocator: Fix reference counting for returned samples.
mf/session: Query and initialize sample allocators for capable output nodes.
mf/session: Implement support for sinks that provide sample allocators.
mf/evr: Set display window to the presenter if it was specified on sink creation.
mfplat/tests: Remove a couple of failing tests.
wordpad: Fill font selection combobox with fully processed font list.
ole32/propstorage: Handle VT_I8/VT_UI8 when serializing properties.
dxva2: Add a semi-stub for VideoProcessBlt().
evr/presenter: Add IQualProp stub.
evr/presenter: Create a swapchain for given output window.
evr/presenter: Add IMFQualityAdvise stub.
evr/mixer: Fix method function name for consistency.
mf/tests: Use a helper for supported intefaces checks.
mf/evr: Add IMFQualityAdvise stub.
mfplat/buffer: Fix byte width set for d3d9 surface buffers.
comctl32: Use wide-char string literals.
mfplat/tests: Add a helper to check for supported interfaces.
include: Guard MFVideoNormalizedRect definition in mfmediaengine.idl.
mfplat: Add EVRConfig_* attributes to tracing.
evr/sample: Reset attributes, timestamps, and flags on ::Clear().
evr/mixer: Fix output filling behaviour regarding sample properties.
evr/tests: Add more tests for supported service interfaces.
evr/presenter: Expose all interfaces for MR_VIDEO_RENDER_SERVICE.
evr/mixer: Set timestamp and duration for output samples.
evr/mixer: Improve GetService() handling of unsupported interfaces/services.
evr/presenter: Fix error code for unsupported services.
evr/presenter: Add IDirect3DDeviceManager9 as a supported interface.
evr/tests: Presenter should support IMFQualityAdviseLimits.
evr/presenter: Implement sample presenting functionality.
xmllite/reader: Use wide-char string literals.
xmllite/writer: Use wide-char string literals.
mfplat: Use wide-char string literals.
mf/evr: Add support for per-stream attributes.
evr/tests: Relax allocator initialization test.
mf/evr: Derive stream attributes from mixer input attributes.
mf/samplegrabber: Implement IMFRateSupport.
combase: Set a flag on thread id initialization.
combase: Update thread flags when entering/leaving apartments.
mf/session: Shutdown and release presentation clock on session shutdown.
mf/session: Keep a reference to the original activation object when binding sink nodes.
mf/session: Shutdown current topology when clearing presentation.
Paul Gofman (12):
crypt32: Fix adding trusted roots to store.
wininet: Correctly return error status from InternetSetFilePointer() stub.
mshtml: Check for EVENTID_LAST in ensure_doc_nsevent_handler().
bcrypt: Prevent gnutls from using system priority file.
crypt32: Prevent gnutls from using system priority file.
secur32: Prevent gnutls from using system priority file.
ws2_32: Force adding completion for error status in WS2_ConnectEx().
user32: Avoid holding display_dc_section when creating display DC.
directmanipulation: Return S_OK form viewport_SetViewportOptions stub.
ntdll: Avoid overwriting parameters with context in call_user_apc_dispatcher() on x86.
msvcrt: Save and restore rounding mode in fegetenv() / fesetenv().
ntdll: Fix SMT CPU flag reporting.
Piotr Caban (7):
ucrtbase: Add support for utf8 codepage in setlocale.
msvcrt: Mark old_locinfo as const in create_locinfo.
msvcrt: Call set_lc_locale_name in update_threadlocinfo_category.
msvcrt: locinfo->lc_name should be guarded by lc_category->wrefcount.
msvcrt: Simplify category checks in create_locinfo.
msvcrt: Lock global locale in _get_current_locale.
msvcrt: Don't overwrite threadmbcinfostruct structure in _setmbcp.
Robert Wilhelm (2):
vbscript: Allow keywords to be used as property name.
vbscript: Support properties with parameters.
Rémi Bernon (21):
bcrypt: Implement 3DES cipher support.
msvcrt: Make locale and thread helper functions CDECL.
msvcrt: Introduce noalloc current locale lookup helpers.
msvcrt: Pass temporary locale to MSVCRT__towlower_l.
msvcrt: Pass temporary locale to MSVCRT__towupper_l.
gdi32: Index font families by name in an rbtree.
gdi32: Rewrite find_face_from_filename using the rbtree.
gdi32: Rewrite find_any_face using the rbtree.
winemenubuilder: Only extract icons when association changed.
widl: Support repetition for some attributes.
widl: Restrict some keywords to WinRT mode only.
widl: Prefer mangled name over typedef in WinRT mode.
gdi32: Ignore Type 1 fonts in fontconfig enumeration.
gdi32: Move FreeType face creation to AddFaceToList.
gdi32: Load font list directly from fontconfig cache.
gdi32: Lazily create and cache fontconfig patterns.
ntdll: Stub ThreadEnableAlignmentFaultFixup info class.
include: Fix DPFLTR_MASK value to 0x80000000.
ntdll/tests: Add tests for DbgPrint* functions.
ntdll: Reimplement DbgPrint* using DBG_PRINTEXCEPTION_C.
ntdll: Raise debug exceptions when invalid heap is destroyed.
Sven Baars (5):
gdi32/tests: Fix a compiler warning.
d3dx9: Don't release textures when D3DXSPRITE_DO_NOT_ADDREF_TEXTURE is specified.
d3dx9: Fully initialize the glyph position.
d3dx9: Implement clipping of glyphs in ID3DXFont_DrawText.
d3dx9: Remove unreachable DT_SINGLELINE handling from ID3DXFont_DrawText.
Zebediah Figura (29):
quartz: Don't hold an extra reference in async_run_cb().
quartz/tests: Test releasing the graph while waiting for an asynchronous paused -> running transition.
msi: Use the global is_wow64 variable in custom_start_server().
msi/tests: Test the "VersionNT" property.
quartz/tests: Test adding and removing filters while the graph is running.
quartz: Don't stop the filter in IFilterGraph::RemoveFilter().
quartz/tests: Store a testfilter pointer inside the testpin structure.
quartz/tests: Add more tests for interaction between pin connection and graph state.
quartz: Immediately return failure from IFilterGraph::RemoveFilter() if IPin::Disconnect() fails.
makefiles: Disable implicit rules.
quartz/tests: Pass an IMediaControl to some functions.
winegstreamer: Don't fail state change methods if the sink pin is not connected.
winegstreamer: Don't fail parser_init_stream() if a source pin is not connected.
wineqtdecoder: Do not fail state change methods if source pins are not connected.
quartz: Commit the allocator directly.
amstream/tests: Commit the allocator directly.
strmbase: Remove no longer used allocator commit helpers.
strmbase: Get rid of strmbase_pin_get_media_type().
quartz/tests: Enable no longer failing tests for IBasicVideo::GetCurrentImage().
strmbase: Forbid disconnecting the sink if the filter is not stopped.
quartz/tests: Test (dis)connecting while not stopped.
qasf/tests: Test (dis)connecting while not stopped.
qcap/tests: Test (dis)connecting while not stopped.
qedit/tests: Test (dis)connecting while not stopped.
quartz/avidec: Don't send ICM_DECOMPRESS_BEGIN or ICM_DECOMPRESS_END messages if the source is disconnected.
quartz/tests: Add some tests for AVI decoder sample processing.
quartz/avidec: Don't copy the media time to the output sample.
quartz/tests: Add some tests for streaming events on the AVI decoder.
quartz/tests: Add some tests for flushing on the DirectSound renderer.
Zhiyi Zhang (3):
user32/tests: Pass a struct DEVMODEA pointer to expect_dm() for monitor tests.
winex11.drv: Adjust the priority of NoRes display settings handler to 1.
winex11.drv: Clarify parent in struct x11drv_win_data comments.
Ziqing Hui (3):
windowscodecs: Correctly set pixel format of uncompressed DDS with extended header.
d3dx10/tests: Add tests for D3DX10GetImageInfoFromResource{A, W}().
d3dx10: Implement D3DX10GetImageInfoFromResource{A, W}().
Alexandre Julliard has announced a new development release of Wine with C runtime libraries converted to PE, use fontconfig cache for faster startup, video playback improvements, 3DES cipher support, and various bug fixes.