Software 42321 Published by

Alexandre Julliard has announced the release of a new Wine development release with OpenGL library converted to PE, support for multi-architecture PE builds, more preparation work for Vulkan 32-on-64 support, support for creating import libraries without dlltool, locale data updates, and various bug fixes.



Wine release 7.21

The Wine development release 7.21 is now available.

What's new in this release:
- OpenGL library converted to PE.
- Support for multi-architecture PE builds.
- More preparation work for Vulkan 32-on-64 support.
- Support for creating import libraries without dlltool.
- Locale data updates.
- Various bug fixes.

The source is available at:

https://dl.winehq.org/wine/source/7.x/wine-7.21.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 7.21 (total 25):

- #29974 StarBurn 13 crashes on disabling skins
- #51418 fotoBiz X - Fatal error on startup
- #51779 Visual Studio msvsmon fails to bind server socket in child processes
- #52467 Kaseya Live Connect 9.5.0.28 management software sub-component crashes
- #53081 Retina Mode broken since 7f7f9fa22c5cbe629e79a54257d5bd21403e80db
- #53100 Euphoria: freezes every second while controllers are plugged in
- #53153 SetWindowPos() incorrectly computes exposure region of parent window with WS_EX_COMPOSITED
- #53484 dxgi:dxgi times out on the debiant VM
- #53590 GetFileInformationByHandleEx() not fully implemented causing boost::directory_iterator failures with boost v1.79 and newer
- #53606 First intro stops on last frame in multiple games (Darksiders Genesis, The Medium)
- #53617 Imaris fails at exit with error, and keeps a process running.
- #53631 Multiple 64-bit applications have issues with dialogs (DipTrace, foobar2000 installer)
- #53676 vbscript can not exec_script - invalid number of arguments for Randomize
- #53738 Cherry MIDI sequencer cannot read files with a path including CJK characters
- #53749 Hotel Giant 2: black screen after changing resolution or enabling anti-aliasing
- #53768 Winfile crashes due to unimplemented user32.dll.DragObject
- #53798 Port Royale 2: incomplete text rendering
- #53849 Apiset DLLs broken in non-PE builds
- #53856 Wine 7.20 installs some windows files to the wrong location
- #53859 Hades shows black screen at Vulkan mode
- #53861 Non-PE builds fail after "makefiles: Add support for multiple PE architectures."
- #53872 Adobe Reader XI crash opening settings in Protected Mode
- #53879 Gothic 1 doesn't launch (msdbi.dll failed to initialize)
- #53888 vbscript does not allow Mid on non VT_BSTR
- #53893 ws2_32:sock - test_WSASocket() gets an unexpected raw protocol name in French on Windows

----------------------------------------------------------------

Changes since 7.20:

Alex Henrie (13):
include: Include minidumpapiset.h in imagehlp.h.
msvcrt: Change return type of _splitpath_s to errno_t.
include: Add _splitpath_s.
msvcrt: Change return type of freopen_s to errno_t.
include: Add freopen_s.
msvcrt: Change return type of wcsncat_s to errno_t.
include: Add wcsncat_s.
cmd: Remove inapplicable comment from WCMD_getfileowner.
cmd: Use the wcsrev function instead of reimplementing it.
include: Add sdkddkver.h.
uuid: Add propkey.h.
include: Define PROPSHEETPAGE[AW]_V[1-4].
mscoree: Use standard C functions for memory allocation in assembly.c.

Alexandre Julliard (34):
makefiles: Add support for multiple PE architectures.
makedep: Always generate a fake module for the native architecture.
ntdll: Fix trace formats for 64-bit values on ARM64.
wow64: Load dependencies of 64-bit modules only from the 64-bit system directory.
msvcrt: Use WINAPIV calling convention for variadic functions.
xml2: Use WINAPIV calling convention for variadic functions.
xslt: Use WINAPIV calling convention for variadic functions.
ntdll: Reimplement KeUserModeCallback in assembly on i386.
ntdll: Reimplement KeUserModeCallback in assembly on x86_64.
ntdll: Reimplement KeUserModeCallback in assembly on ARM.
ntdll: Reimplement KeUserModeCallback in assembly on ARM64.
faudio: Import upstream release 22.11.
png: Import upstream release 1.6.38.
zlib: Import upstream release 1.2.13.
lcms2: Import upstream release 2.14.
xml2: Import upstream release 2.10.3.
xslt: Import upstream release 1.1.37.
nls: Update locale data to CLDR version 42.
kernelbase: Update timezone data to version 2022f.
win32u: Always use the full union for sysparams entries.
ntdll: Don't inline NtCurrentTeb() in Unix libraries.
openal32: Remove dll.
ntdll: Use a pthread key for the TEB on all platforms.
ntdll: Move the initialization of the thread register into signal_start_thread().
ntdll: Use a separate function pointer for the TEB hack on ARM64.
ntdll: Use a proper Unix syscall for load_so_dll().
ntdll: Use a proper Unix syscall for init_builtin_dll().
ntdll: Use a proper Unix syscall for unwind_builtin_dll().
ntdll: Use a proper Unix syscall for RtlGetSystemTimePrecise().
Revert "light.msstyles: Add nonclient metrics.".
ntdll: Add a Wine-specific process info class for the LDT copy.
makedep: Remove support for "hybrid" Unix libraries.
winegcc: Remove support for "hybrid" Unix libraries.
winebuild: Remove support for "hybrid" Unix libraries.

Anton Baskanov (6):
quartz/tests: Add tests for MPEG layer-3 decoder IEnumMediaTypes.
winegstreamer: Add a skeleton MPEG layer-3 decoder filter.
quartz/tests: Add tests for MPEG layer-3 decoder accepted media types.
winegstreamer: Reject incompatible input media types in MPEG layer-3 decoder.
quartz/tests: Add tests for MPEG layer-3 decoder sink connection.
winegstreamer: Reject incompatible output types in MPEG layer-3 decoder.

Arkadiusz Hiler (1):
cmd/tests: Make sure for /f doesn't loop infinitely on NULs.

Bartosz Kosiorek (19):
msvcrt: Add _fprintf_l implementation.
msvcrt: Add _fprintf_p implementation.
msvcrt: Add _fprintf_p_l implementation.
msvcrt: Add _fprintf_s_l implementation.
msvcrt: Add _fwprintf_p implementation.
msvcrt: Add _fwprintf_p_l implementation.
msvcrt: Add _fwprintf_s_l implementation.
msvcrt: Add _scprintf_l implementation.
msvcrt: Add _scprintf_p implementation.
msvcrt: Add _scprintf_p_l implementation.
msvcrt: Add _swprintf_p_l implementation.
msvcp90: Add _Cin_func implementation.
msvcp90: Add _Wcin_func implementation.
msvcp90: Add _Cout_func implementation.
msvcp90: Add _Clog_func implementation.
msvcp90: Add _Cerr_func implementation.
msvcp90: Add _Wcout_func implementation.
msvcp90: Add _Wclog_func implementation.
msvcp90: Add _Wcerr_func implementation.

Bernhard Kölbl (3):
mf/tests: Test for copier node in topology using evr.
mf: Assume same up and downstream media type for copier creation.
mf: Set media types for output nodes in the media session.

Brendan Shanks (12):
ntdll: Print correct thread rename trace if non-pseudo-handle to current thread is used.
winemac: Remove pre-Mac OS X 10.8 workarounds.
ntdll: Set the QoS class of the main Wine thread on macOS.
ntdll: Add a Wine-specific THREADINFOCLASS to set just the native thread name.
ntdll: Add native thread renaming for exception method.
dsound: Set name of internal threads.
winepulse: Set name of internal threads.
winealsa: Set name of internal threads.
ntdll: Fix runtime availability check for pthread_attr_set_qos_class_np.
ntdll: Suppress deprecation warnings when calling MPTaskIsPreemptive().
ntdll: Stop using deprecated kIOMasterPortDefault constant.
winemac.drv: Stop using deprecated kIOMasterPortDefault constant.

Connor McAdams (7):
uiautomationcore: Add UiaNavigate stub.
uiautomationcore: Add parent link check to prepare_uia_node().
uiautomationcore: Add helper function for returning a new node from an IWineUiaProvider.
uiautomationcore: Implement ConditionType_True parent navigation for HUIANODEs.
uiautomationcore: Partially implement ConditionType_True sibling navigation for HUIANODEs.
uiautomationcore: Implement ConditionType_True child navigation for HUIANODEs.
uiautomationcore: Add support for navigating between sibling node providers of a parent HUIANODE.

Dmitry Timoshkov (1):
uxtheme: Protect CloseThemeData() from invalid input.

Eric Pouech (13):
dbghelp: No longer pass inline site's address upon creation.
dbghelp: Store address range as FAM in symt_inlinesite.
dbghelp: Use addr_range for storing symt_function address and size.
dbghelp: Get rid of symt_inlinesite by merging it inside symt_function.
user32: Fix rounding issue in edit tests for char pos messages.
conhost/tests: Fix some conditions on tty test termination.
rpcrt4: Fix unexpected exception in ndr_marshal tests.
shell32/tests: Improve timeout detection in shlexec tests.
dbghelp: Added missing DECLSPEC_HIDDEN attribute.
dbghelp: Introduce a helper for module lookup.
dbghelp: Support loading modules from Wine's multi-arch build tree.
cmd: Use CRT file I/O function inside 'for /F' handling.
riched20: Fix failing test in UTF8 locales.

Etaash Mathamsetty (1):
ntoskrnl.exe: Implement KeInitializeGuardedMutex.

Evan Tang (4):
kernel32: Null-terminate the atom names passed to NtAddAtom.
riched20: Move test class creation to a helper function.
riched20: Add test for EN_CHANGE events during window creation.
riched20: Don't emit EN_CHANGE events during window creation.

Fabian Maurer (6):
wbemproxy/tests: Prevent double free (Coverity).
shell32: Prevent double free (Coverity).
win32u: Prevent use after free (Coverity).
ntdll/tests: Fix uninitialized read in ok (Coverity).
sapi: Prevent resource leak (Coverity).
msvcrt/tests: Fix typo (Coverity).

Gabriel Ivăncescu (12):
mshtml/tests: Handle broken localStorage on native.
mshtml: Implement isContentEditable for HTML elements.
mshtml: Improve locale stub for KeyboardEvent.
mshtml: Return E_ABORT if wine-gecko's OnDataAvailable aborts the binding.
mshtml: Don't include fragment in storage event's url prop.
mshtml: Implement HTMLLocation_put_hash.
mshtml: Implement document.importNode.
mshtml: Use nsIDOMDocument instead of nsIDOMHTMLDocument where possible.
jscript: Convert filetime to date properly using unsigned division.
include: Add IDOMParser interface, dispinterface, and coclass.
include: Add CLSID_XHTMLDocument and CLSID_SVGDocument.
mshtml: Add SVG and XHTML document information to the registry.

Georg Lehmann (4):
winevulkan: Update to VK spec version 1.3.233.
winevulkan: VkDeviceAddress needs alignment.
winevulkan: Fix handling bitmasks in needs_alignment.
winevulkan: Fix handling enums in needs_alignment.

Hans Leidekker (5):
rsaenh: Pass exact size to BCryptFinishHash().
bcrypt: Use get_object() in more places.
bcrypt: Validate hash output length.
netprofm: Store a list manager pointer in the network object instead of creating a new list manager.
netprofm: Use CRT allocation functions.

Jacek Caban (41):
winevulkan: Support optional dispatch handles.
winevulkan: Assert Unix call result in generated thunks.
winevulkan: Assert Unix call result in private thunks.
winevulkan: Don't check thunk_type in VkParam.needs_unwrapping.
winevulkan: Don't store conversion functions in VkParam.
winevulkan: Introduce needs_host_type helper function.
winevulkan: Remove unneeded needs_conversion() calls.
winevulkan: Store returnedonly attribute in VkVariable.
winevulkan: Pass direction to needs_conversion helpers.
winevulkan: Move get_conversions implementation to VkVariable.
winevulkan: Remove no longer used Direction.INPUT_OUTPUT.
winevulkan: Pass type as uint32_t to wine_vk_unwrap_handle.
winevulkan: Support output array conversion in _generate_array_conversion_func.
winevulkan: Drop "static_array" from conversion function names.
winevulkan: Use separated classes for struct and array conversions.
winevulkan: Use struct conversion functions for array conversion implementations.
winevulkan: Don't declare host types for structs that don't need it.
winevulkan: Skip unsupported functions in a few more places.
mshtml: Always use navigate_fragment for fragment-only navigation in navigate_uri.
winevulkan: Move find_next_struct implementation to vulkan_private.h.
winevulkan: Convert struct chains in struct conversion functions.
winevulkan: Avoid unneeded copies in struct conversion functions.
winevulkan: Support output dynamic array conversion.
winevulkan: Always fill output in fill_luid_property.
winevulkan: Store parent in VkVariable.
winevulkan: Support pointer dynamic array lengths.
winevulkan: Use generated thunks for vkGetImageSparseMemoryRequirements(2) conversion.
winevulkan: Use const types in conversion function declarations.
winevulkan: Convert struct chain conversions for all structs that need it.
winevulkan: Use generated thunks for VkPipelineCreationFeedback conversion.
winevulkan: Support conversion of optional parameters.
winevulkan: Fix handling unions in needs_alignment().
winevulkan: Preserve const in array conversion output types.
winevulkan: Add support for pointer array conversion.
winevulkan: Use local params struct declarations for 32-bit thunks.
winevulkan: Fix host aliases declaration.
winevulkan: Use local structs declarations for 32-bit conversion functions.
winevulkan: Get rid of *_host types.
winevulkan: Remove no longer used make_vulkan functions.
winevulkan: Move needs_unwrapping implementation to VkVariable.
winevulkan: Don't generate private thunk prototypes for PE-only functions.

Jinoh Kang (7):
server: Correctly expose composited parent window and its child on position change.
server: Redraw composited window child when its z-order changes.
server: Don't invalidate the newly exposed child region on the parent if it doesn't clip children.
ntdll: Move CFI helper macros out of signal_x86_64.c.
ntdll: Add CFI unwind info to __wine_syscall_dispatcher (i386).
comctl32/tests: Flush events before testing edit control SetFocus() messages.
comctl32/tests: Flush events before testing edit control IME messages.

Martin Storsjö (5):
winegcc: Prefer -Wl,--pdb= over -Wl,-pdb,.
ntdll: Add ARM EHABI unwind instructions in assembly functions.
ntdll: Implement ARM EHABI unwinding.
ntdll: Write ret_len with the right size in user_mode_callback_return on arm64.
ntdll: Readd the missed initialization of the thread register on arm.

Mohamad Al-Jaf (2):
setx: Add stub program.
certutil: Add stub program.

Nikolay Sivov (9):
mf/session: Add support for MESessionScrubSampleComplete event.
vbscript: Implement PRNG functions.
comctl32/edit: Check for control destruction on notification return.
user32/edit: Check for control destruction on notification return.
vbscript: Fix a typo in Right() argument type check.
vbscript: Improve invalid argument checks in Right().
vbscript: Improve argument type handling in Mid().
d2d1/tests: Use correct flags constants with D3D11CreateDevice().
vbscript: Add support for argument list in ReDim.

Paul Gofman (28):
ws2_32/tests: Add tests for SO_EXCLUSIVEADDRUSE.
ws2_32: Track SO_EXCLUSIVEADDRUSE option value.
server: Make SO_REUSEADDR and SO_EXCLUSIVEADDRUSE mutually exclusive.
server: Use struct bound_addr as a key to bound_addresses_tree.
server: Set error in check_addr_usage().
server: Use htonl() with INADDR_ANY in ipv4addr_from_v6().
server: Do not translate loopback addr in ipv4addr_from_v6().
server: Support SO_EXCLUSIVEADDRUSE socket option.
http.sys: Use SO_EXCLUSIVEADDRUSE on listening socket.
include: Add windows.gaming.ui.idl.
windows.gaming.ui.gamebar: Add stub DLL.
windows.gaming.ui.gamebar: Add IGameBarStatics interface.
mf: Handle timer time behind clock time in present_clock_schedule_timer().
mf/samplegrabber: Process samples in paused state in ignore_clock mode.
mf/samplegrabber: Handle samples receieved in paused state.
secure32/tests: Add tests for ApplyControlToken (schannel).
secur32: Allocate buffer for either ISC_REQ_ALLOCATE_MEMORY or NULL output in schan_InitializeSecurityContextW().
secur32: Add semi-stub for ApplyControlToken (schannel).
secur32: Implement ApplyControlToken for SCHANNEL_SHUTDOWN.
ws2_32/tests: Don't test protocol name in test_WSASocket().
ntdll: Pass limit instead of zero_bits to map_view().
ntdll: Factor out allocate_virtual_memory().
ntdll: Support HighestEndingAddress in NtAllocateVirtualMemoryEx().
ntdll/tests: Add tests for memory address requirements.
wow64: Support MEM_ADDRESS_REQUIREMENTS in wow64_NtAllocateVirtualMemoryEx().
wow64: Set HighestEndingAddress in wow64_NtAllocateVirtualMemoryEx() if it is absent.
ntdll: Pass alignemnt mask to map_view().
ntdll: Support specified alignment in NtAllocateVirtualMemoryEx().

Piotr Caban (5):
wineps.drv: Add DrvDocumentPropertySheets implementation.
winspool.drv: Use DrvDocumentPropertySheets driver entry in DocumentProperties.
wineps.drv: Remove DrvDocumentProperties entry point.
msvcrt: Fix errno set on read from write-only file.
msvcrt: Fix errno set on write to read-only file.

Rémi Bernon (64):
win32u: Add a BOOL force parameter to update_display_cache.
win32u: Force update display cache after NtUserChangeDisplaySettingsEx.
win32u: Add primary adapter name parameter to ChangeDisplaySettings.
winemac.drv: Use the primary adapter name instead of calling back win32u.
win32u: Add is_primary parameter to GetCurrentDisplaySettings.
winex11.drv: Use the primary adapter info instead of calling back win32u.
winmm: Use a separate last_check for joyGetDevCapsW and joyGetPosEx.
winmm: Add missing void parameter in function definition.
winebus.sys: Ignore SDL events for devices which aren't started.
win32u: Lock display devices while applying display settings.
win32u: Write display settings to the registry in apply_display_settings.
win32u: Read mode from the registry if GetCurrentDisplaySettings fails.
winebuild: Split get_link_name into a separate get_abi_name helper.
winebuild: Use asm_name to add underscore prefix in asm_globl.
winebuild: Split output_static_lib into output_(import|static)_lib.
opengl32: Create a unixlib interface for GL functions.
opengl32: Use the unixlib for glGet(String|Integerv).
opengl32: Move the null functions to unix_thunks.c.
opengl32: Use the unixlib interface for EXT functions.
opengl32: Use the unixlib interface for WGL functions.
opengl32: Avoid using internal functions in wglUseFontBitmaps.
opengl32: Avoid using internal functions in wglUseFontOutlines.
opengl32: Introduce a new NtUserCallOpenGLDebugMessageCallback callback.
opengl32: Move some WGL functions to unix_wgl.c.
opengl32: Use the unixlib interface for more WGL functions.
winebuild: Avoid calling asm_name twice in function arguments.
comctl32/tests: Remove a now succeeding todo_wine.
xaudio2_7/tests: Mark tests failing randomly as flaky.
mf: Always enumerate branch source types for transform nodes.
mf: Add some topology source node checks in IMFMediaSession_SetTopology.
gitlab: Add a 2s wait between macOS build iterations.
opengl32: Introduce new disabled_extensions_index helper.
opengl32: Move extension filtering helpers to unix_wgl.c.
opengl32: Move glGetStringi extension filtering to unix_wgl.c.
opengl32: Move glGetString extension filtering to unix_wgl.c.
opengl32: Move glGetIntegerv extension filtering to unix_wgl.c.
opengl32: Move function / extension registry mapping to unix_thunks.c.
opengl32: Move wglGetProcAddress extension filtering to unix_wgl.c.
winebuild: Introduce a new --without-dlltool winebuild flag.
winebuild: Implement import lib generation without dlltool.
winebuild: Enable unwind tables by default in PE files.
winebuild: Implement delay import lib generation without dlltool.
winebuild: Fix import hint value for symbols imported by name.
winebuild: Put the delay import descriptor in data section.
winegstreamer: Introduce new wm_stream_allocate_sample helper.
winegstreamer: Split the wm_reader_get_stream_sample helper.
winegstreamer: Allow wg_parser_stream_get_buffer to wait on all streams.
winegstreamer: Return no buffer when wg_parser stream is disabled.
winegstreamer: Merge wm_reader_get_stream_sample with GetNextSample.
opengl32: Avoid calling back the wglMakeCurrent win32 thunk.
opengl32: Use glReserved1[0] and glReserved1[1] for draw and read DCs.
opengl32: Split opengl_ext.h into private.h and unix_private.h.
opengl32: Avoid recursively entering WGL critical section.
opengl32: Use ntdll registry functions to read disabled extensions.
opengl32: Build with msvcrt.
opengl32: Use msvcrt allocation functions.
opengl32: Use RtlSetLastWin32Error instead of SetLastError.
kernel32/tests: Test more Global/Local functions with invalid pointers.
kernel32/tests: Test (Global|Local)Handle with heap allocated pointers.
ntdll: Introduce a new heap block_set_flags helper.
ntdll: Store the user flags in the heap block flags.
ntdll: Check block user flags in RtlSetUserValueHeap.
ntdll: Check block user flags in RtlGetUserInfoHeap.
ntdll: Implement RtlSetUserFlagsHeap.

Santino Mazza (2):
user32/tests: Test for MB_SYSTEMMODAL.
user32/msgbox: Implement MB_SYSTEMMODAL.

Sebastián Aedo (2):
netprofm: Add INetwork_GetNetworkConnections test.
netprofm: Implement network_GetNetworkConnections.

Stefan Dösinger (1):
ntdll: Fix building on Mojave / Xcode 11.3.1.

Tarcísio Ladeia de Oliveira (1):
gdi32/tests: Fix assertion message.

Tim Clem (3):
wow64: Truncate too-large regions from NtQueryVirtualMemory(MemoryBasicInformation).
wow64: Return error from NtQueryVirtualMemory(MemoryRegionInformation) for a too-large address.
wow64: Truncate too-large regions from NtQueryVirtualMemory(MemoryRegionInformation).

Torge Matthies (1):
ntdll: Fix incorrectly sized mov in user_mode_callback_return.

Zebediah Figura (12):
winevulkan: Do not pass win32 allocation callbacks directly to the Unix side.
winecoreaudio: Disable thread DllMain() calls.
winecoreaudio: Clean up the timer queue handle in DllMain().
wined3d: Factor out creating the window state thread.
wined3d: Set the window state thread description only if it's actually a new thread.
d3d8/tests: Test drawing from a managed texture after Reset().
d3d9/tests: Test drawing from a managed texture after Reset().
wined3d: Factor out a mark_managed_resource_dirty() helper.
wined3d: Add a dirty rect to managed textures when resetting.
wined3d: Always invalidate ~map_binding in texture write maps.
d3d8: Build without -DWINE_NO_LONG_TYPES.
d3d9: Build without -DWINE_NO_LONG_TYPES.

Zhiyi Zhang (15):
comctl32/button: Initialize dtFlags in PB_Paint().
win32u: Skip detached monitors in is_window_rect_full_screen().
winex11.drv: Initialize escape.drawable in X11DRV_GetDC().
winecfg: Use SM_CYSIZE to set and get caption height.
winecfg: Adjust top-level window rectangles after theme changes.
user32: Hook drawing menu buttons.
uxtheme: Support drawing themed menu buttons.
user32/tests: Test creating a fullscreen window spanning multiple monitors.
winex11.drv: Support _NET_WM_FULLSCREEN_MONITORS.
d2d1/tests: Add hwnd render target pixel format tests.
d2d1: Use D2D1_ALPHA_MODE_IGNORE if D2D1_ALPHA_MODE_UNKNOWN is used for creating hwnd render targets.
uxtheme: Reference count theme classes.
uxtheme: Use atomic functions for reference counting.
light.msstyles: Add nonclient metrics.
user32: Use NtUserSetWindowLongPtr() in set_dialog_proc().

Ziqing Hui (4):
usp10/tests: Add CJK shaping test.
usp10/tests: Add Hiragana shaping test.
usp10/tests: Add Katakana shaping test.
gdi32/uniscribe: Add fallback font for Kana and CJK script.

wuliande (1):
msvcp90: Make _Condition_variable_* function pointers static.

Wine