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 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 julliard@winehq.org