Wine release 7.7
The Wine development release 7.7 is now available.
What's new in this release:
- More progress on the PE conversion of the X11 and OSS drivers.
- Support for UTF-8 as default Ansi codepage.
- Theming support for control panel applets.
- Various bug fixes.
The source is available from the following locations:
https://dl.winehq.org/wine/source/7.x/wine-7.7.tar.xz
http://mirrors.ibiblio.org/wine/source/7.x/wine-7.7.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.7 (total 11):
6682 IrfanView's 4.44 Help -> About window is missing a picture on the left
24574 RAR Password Recovery Magic initial (registration) window is empty and doesn't allow any interaction
45916 x64dbg fails to load debuggee, needs ThreadScheduler_ScheduleTask
52223 activeCodePage utf-8 in application manifest not respected
52640 Steam does not display anything when using the Vulkan renderer (stack overflow from official Vulkan loader calling into dxgi)
52679 Anno 1602 / 1602 A.D. graphics too dark / black
52703 64-bit Irfanview crashes on startup
52763 ConEmu doesn't work with winver > Win8.1
52787 Invalid function prototype for "RegisterUserApiHook" when compiling for C++
52809 steamwebhelper.exe crashes repeatedly since 2aa4673f32
52825 Capella help crashes with Error "qtwebengingeprocess has serious errors"
----------------------------------------------------------------
Changes since 7.6:
Alex Henrie (1):
kernel32: Fix percentage calculation in GetSystemPowerStatus.
Alexandre Julliard (31):
ntdll: Move some duplicated locale definitions to a common header.
ntdll: Move more codepage conversion functions to the common header.
ntdll: Use the standard CPTABLEINFO structure for the Unix codepage.
ntdll: Support UTF-8 codepage in string conversion functions.
kernelbase: Use RtlMultiByteToUnicodeN in IsChar* functions.
kernelbase: Avoid redundant locale lookups in GetLocaleInfoA().
kernelbase: Support UTF-7/8 codepages in get_codepage_table().
kernelbase: Support UTF-8 as default Ansi codepage in MultiByteToWideChar().
kernelbase: Support UTF-8 as default Ansi codepage in WideCharToMultiByte().
ntdll: Default to UTF-8 codepage at startup.
ntdll: Export a few more codepage functions from ntdll.so.
win32u: Use the ntdll functions for codepage conversions.
win32u: Use character sizes in the codepage conversion functions.
win32u: Use CPTABLEINFO to store the Ansi/OEM codepages.
win32u: Support UTF-8 as the default Ansi codepage.
msvcrt: Fix mbcs initialization for UTF-8 codepage.
ntdll: Initialize the system locale on the Unix side.
kernelbase: Move codepage initialization to ntdll.
ntdll: Add support for 2019 and 2020 WindowsSettings namespaces.
ntdll: Support overriding the codepage from the manifest.
ole32: Fix sign expansion of codepage values.
user32: Pass a valid length to RtlUnicodeToMultiByteN/RtlMultiByteToUnicodeN.
user32/tests: Fix some tests that break in UTF-8 codepage.
gdi32: Support UTF-8 codepage in TranslateCharsetInfo().
winedump: Add support for dumping locale.nls.
include: Avoid Windows types in CodeView structure definitions.
winedump: Fix some incorrect uses of Unix 'long' type.
winedump: Avoid using DWORD in private definitions.
winedump: Remove unused variables.
winedump: Enable compilation with long types.
winedump: Build with nameless unions/structs.
Alexandros Frantzis (1):
win32u: Avoid iterating over a NULL window list when broadcasting.
Alistair Leslie-Hughes (1):
msado15: Return valid object in Recordset::Clone.
Aurimas Fišeras (1):
po: Update Lithuanian translation.
Austin English (1):
dbghelp: Downgrade a FIXME to a WARN.
Bernhard Kölbl (8):
windows.media.speech/tests: Fix some uses after release.
windows.media.speech/tests: Make waits non infinite.
windows.media.speech/tests: Remove some tests.
windows.media.speech/tests: Remove an unnecessary variable.
windows.media.speech/tests: Add tests to check if IAsyncInfo_Close is non blocking.
windows.media.speech: Partially implement IAsyncOperation.
windows.media.speech: Implement concurrency in IAsyncOperation.
windows.media.speech: Add ISpeechRecognitionCompilationResult.
Biswapriyo Nath (2):
include: Add IArcadeStick interface in windows.gaming.input.idl.
include: Add Windows.Gaming.Input.FlightStick runtimeclass declaration.
Brendan Shanks (2):
wow64cpu: Use different JMP instruction to work around Rosetta bug.
ntdll/tests: Test that threads have unique TEBs.
Connor McAdams (8):
webservices: Set proper minor version for .NET Message Framing Protocol.
webservices/tests: Add some tests for session dictionary size.
webservices/tests: Add test for binary encoding nested structure handling.
webservices: Don't advance binary encoding reader if record type doesn't match.
webservices: Check for channel state in WsReceiveMessage.
webservices: Properly handle max session dictionary size channel property.
webservices: Respect session dictionary size limits on send dictionary.
webservices: Respect session dictionary size limits on receive dictionary.
Daniel Lehman (1):
include: Add some math declarations.
Eric Pouech (17):
combase: Use I64 width modifier for 64-bit integers.
rtqwork: Trace 64-bit integers with I64 width modifier.
rpcrt4: Don't cast ptrdiff_t to ULONG in traces, use %I instead.
ntdll/tests: Simplify printf for 64 bit integers.
wininet/tests: Simplify printf for 64 bit integers.
winedbg: Simplify printf for 64 bit integers.
oleaut32/tests: Simplify test by using long long constants.
oleaut32/tests: Simplify printf for 64 bit integers.
kernel32/tests: Add more CreateProcess console management tests.
server: Use negative values for console pseudo handles.
kernelbase: Provide a pseudo console environment for initial CUI processes not tied to a Unix tty.
windowscodecs/tests: Simplify printf for 64 bit integers.
d3dxof: Don't cast ptrdiff_t to ULONG in traces, use %I instead.
d3dx10: Fix long type warnings.
start: Remove workaround for /exec without console.
kernel32/tests: Make the console tests pass if current console is shell-no-window.
kernel32/tests: Adapt duplicate console handle test to non-Win7 handles.
Esme Povirk (2):
gdiplus: Accept newer version in OpenType header.
windowscodecs: pceltFetched is optional in IWICEnumMetadataItem.
Floris Renaud (1):
po: Update Dutch translation.
François Gouget (4):
conhost: Fix the spelling of a couple of comments.
winegstreamer: Fix the spelling of a comment.
crypt32/tests: Fix the spelling of an ok() message.
riched20/tests: Fix the spelling of a comment.
Gabriel Ivăncescu (26):
urlmon: Add basic implementation of MapBrowserEmulationModeToUserAgent.
mshtml: Always return the custom user agent if it has been set.
urlmon: Return the currently set user agent when 'version' is invalid.
jscript: Handle PROP_IDX in jsdisp_get_own_property.
jscript: Make idx props enumerable.
jscript: Throw proper error when invoking non-method builtin.
jscript: Accept DISPATCH_PROPERTYPUTREF for jsdisps.
mshtml/tests: Add initial tests for NULL Dispatch objects in scripts.
jscript: Treat NULL disps as actual null values in html mode.
jscript: Defer lookup to the actual locals for function statements.
mshtml: Implement enumerator for HTMLStyleSheetsCollection.
mshtml: Implement enumerator for HTMLRectCollection.
mshtml: Implement enumerator for HTMLFormElement.
mshtml: Implement enumerator for HTMLSelectElement.
mshtml: Move some static functions up.
mshtml: Implement enumerator for HTMLAttributeCollection.
jscript: Handle NULL return pointers in all constructors.
jscript: Move Set below Map.
jscript: Iterate through the map in a helper function.
jscript: Set a map entry using a helper function.
jscript: Pass the Map object to the callback when iterating.
jscript: Support passing 'this' context to the Map callback when iterating.
jscript: Compare numbers in a Map bitwise for equality.
jscript: Implement Set on top of Map.
jscript: Use proper error description for invalid Set 'this'.
jscript: Initialize hres in String constructor.
Giovanni Mascellani (2):
mfreadwrite/reader: Make the stream sample allocator callback own a reference to the source reader.
mfreadwrite/reader: Unset sample allocator callbacks while destroying the source reader.
Hans Leidekker (2):
crypt32/tests: Get rid of workarounds for old Windows versions.
webservices: Always set channel state to WS_CHANNEL_STATE_FAULTED when a send or receive operation failed.
Hugh McMaster (13):
regedit: Use wide character string literals in childwnd.c.
regedit: Use wide character string literals in edit.c.
regedit: Use wide character string literals in framewnd.c.
regedit: Use wide character string literals in hexedit.c.
regedit: Use wide character string literals in listview.c.
regedit: Use wide character string literals in regedit.c.
regedit: Use wide character string literals in treeview.c.
regedit: Use wide character string literals in main.c.
regedit: Use wide character string literals in regproc.c.
regedit: Mark WCHAR szFrameClass static.
regedit: Mark WCHAR szTitle static.
regedit: Remove unused WCHAR szHexEditClass from main header.
conhost: Save default font's pitch and family on first run.
Huw D. M. Davies (55):
wineoss: Explicitly store the channel count in the client.
wineoss: Dynamically size the devnode array.
wineoss: Use the global lock to lock the session.
wineoss: Introduce a stream structure.
wineoss: Move is_format_supported to the unixlib.
wineoss: Don't cache the oss_audioinfo in the client.
wineoss: Move the stream creation to AudioClient_Initialize().
wineoss: Move get_mix_format to the unixlib.
wineoss: Use the stream ptr to indicate the init state.
wineoss: Store the mute state in the stream.
wineoss: Use the sessions lock to lock the client's data.
wineoss: Use a pthread mutex for the stream lock.
wineoss: Use NtAllocateVirtualMemory() to alloc the buffers returned to the user.
wineoss: Move create_stream and release_stream to the unixlib.
wineoss: Move get_buffer_size to the unixlib.
wineoss: Move get_latency to the unixlib.
wineoss: Move get_current_padding to the unixlib.
wineoss: Store the period in 100ns units.
wineoss: Move timer_loop to the unixlib.
wineoss: Move start to the unixlib.
wineoss: Move stop to the unixlib.
wineoss: Move reset to the unixlib.
wineoss: Move set_event_handle to the unixlib.
wineoss: Move get_render_buffer to the unixlib.
wineoss: Move release_render_buffer to the unixlib.
wineoss: Move get_capture_buffer to the unixlib.
wineoss: Move release_capture_buffer to the unixlib.
wineoss: Move get_next_packet_size to the unixlib.
wineoss: Move get_frequency to the unixlib.
wineoss: Move get_position to the unixlib.
wineoss: Move is_started to the unixlib.
wineoss: Move set_volumes to the unixlib.
wineoss: Remove some unused members.
wineoss: Remove preprocessor checks for SNDCTL_SEQ_NRMIDIS.
wineoss: Move midi_init to the unixlib.
winealsa: Wait for the notify buffer to empty, rather than dropping an event.
wineoss: Store the sequencer fd in the driver struct.
wineoss: Add a temporary syscall to open and close the seq fd.
wineoss: Add a temporary midi_out_fm_patch syscall.
wineoss: Add a temporary midi_out_fm_reset syscall.
wineoss: Move MODM_OPEN and MODM_CLOSE to the unixlib.
wineoss: Use separate functions to handle MODM_DATA for FM synths and ports.
wineoss: Move MODM_DATA to the unixlib.
wineoss: Move MODM_LONGDATA to the unixlib.
wineoss: Move MODM_PREPARE and MODM_UNPREPARE to the unixlib.
winepulse: Use UINT64 handles to represent the stream.
winepulse: Return offsets rather than ptrs to the strings.
winepulse: Limit Wow64 buffer allocations to 32-bit addresses.
winepulse: Implement Wow64 entry points in the Unix library.
winealsa: Pass a client ptr to the callback instead of a stream.
winealsa: Use UINT64 handles to represent the stream.
winealsa: Return offsets rather than ptrs to the strings.
winealsa: Limit Wow64 buffer allocations to 32-bit addresses.
winealsa: Implement Wow64 mmdevapi entry points in the Unix libraray.
winealsa: Implement Wow64 midi entry points in the Unix library.
Jacek Caban (78):
winex11: Directly use ntdll for registry access in setup_options.
winex11: Directly use ntdll for registry access in create_xcursor_system_cursor.
winex11: Directly use ntdll for registry access in X11DRV_GetICMProfile.
winex11: Directly use ntdll for registry access in get_display_device_reg_key.
winex11: Directly use ntdll for registry access in read_registry_settings.
winex11: Directly use ntdll for registry access in write_registry_settings.
win32u: Implement NtGdiGetDCDword.
win32u: Implement NtGdiGetDCPoint.
winex11: Directly use win32u for GDI functions in bitblt.c.
winex11: Directly use win32u for GDI functions in window.c.
winex11: Directly use win32u for GDI functions in graphics.c.
winex11: Directly use win32u for GDI functions in palette.c.
winex11: Directly use win32u for GDI functions in xrender.c.
winex11: Directly use win32u for GDI functions in more places.
kernelbase: Add support for CREATE_NO_WINDOW flag in CreateProcess.
win32u: Introduce inline helpers for NtUserCallNoParam calls.
win32u: Use NtUserCallHwndParam for MirrorRgn implementation.
win32u: Introduce inline helpers for NtUserCallOneParam calls.
win32u: Remove no longer needed NtUserCallOneParam exports.
win32u: Introduce inline helpers for NtUserCallTwoParam calls.
win32u: Introduce inline helpers for NtUserCallHwnd calls.
win32u: Introduce inline helpers for NtUserCallHwndParam calls.
winex11: Remove no longer needed helpers.
winex11: Directly use win32u for user functions in window.c.
user32: Get rid of __wine_set_pixel_format.
win32u: Move NtUserExcludeUpdateRgn implementation from user32.
win32u: Move NtUserChildWindowFromPointEx implementation from user32.
win32u: Move EnableWindow implementation from user32.
win32u: Introduce NtUserMapWindowPoints.
win32u: Move NtUserClientToScreen implementation from user32.
win32u: Introduce NtUserGetMessagePos.
winex11: Directly use win32u for user functions in mouse.c.
winex11: Directly use win32u for user functions in opengl.c.
winex11: Directly use win32u for user functions in settings.c.
winex11: Directly use win32u for user functions in event.c.
winex11: Directly use win32u in more places.
win32u: Move NtUserTranslateMessage implementation from user32.
win32u: Move CreatePopupMenu implementation from user32.
win32u: Move NtUserCheckMenuItem implementation from user32.
win32u: Move NtUserEnableMenuItem implementation from user32.
win32u: Move DrawMenuBar implementation from user32.
win32u: Move ShowOwnedPopups implementation from user32.
win32u: Move more WM_SYSCOMMAND handling from user32.
win32u: Use winuser.h inline rect helpers.
ntdll: Provide RtlInitUnicodeString for unixlibs.
win32u: Use RtlInitUnicodeString from ntdll.so.
winex11: Use pthread for surface locking.
winex11: Use pthread for keyboard lock.
winex11: Use pthread for synchronization in opengl.c.
winex11: Use pthread for palette locking.
winex11: Use pthread for settings locking.
winex11: Use pthread for synchronization in vulkan.c.
winex11: Use pthread for win data locking.
winex11: Use pthread for D3DKMT locking.
winex11: Use pthread for error handler locking.
winex11: Use pthread for xrandr locking.
winex11: Use pthread for xrender locking.
winex11: Use NtUserBuildHwndList for has_owned_popup implementation.
winex11: Use build_hwnd_list for X11DRV_DisplayDevices_Update implementation.
winex11: Use pthread_once in create_x11_physdev.
win32u: Expose public parts of user_thread_info in ntuser.h.
winex11: Use NtUserGetThreadInfo to access thread data.
winex11: Use TEB to store driver thread data.
winex11: Directly use ntdll in display_device_init mutex.
win32u: Move NtUserFindWindowEx implementation from user32.
win32u: Move NtUserSetMenuContextHelpId implementation from user32.
win32u: Move NtUserGetMenuItemRect implementation from user32.
win32u: Move NtUserSetMenu implemenetation from user32.
win32u: Move GetMenuInfo implementation from user32.
win32u: Move is_window_rect_full_screen implementation from winex11.
winex11: Use Unix environment variable in remove_startup_notification.
win32u: Move NtUserThunkedMenuInfo implementation from user32.
win32u: Move NtUserSetMenuDefaultItem implementation from user32.
win32u: Move NtUserSetClipboardViewer implementation from user32.
win32u: Move NtUserChangeClipboardChain implementation from user32.
win32u: Move EnumClipboardFormats implementation from user32.
winex11: Use a simple sdbm hash implementation in X11DRV_GetICMProfile.
winex11: Directly use ntdll in X11DRV_GetICMProfile.
Jinoh Kang (1):
include: Remove duplicate definitions of UOI_* macros.
Julian Rüger (1):
po: Update German translation.
Matteo Bruni (1):
d3dxof/tests: Remove redundant skips after ok() calls.
Mohamad Al-Jaf (2):
include: Add CMSMPEGDecoderMFT coclass.
include: Add CLSID_MSVPxDecoder declaration.
Nikolay Sivov (25):
evr/mixer: Implement GetAvailableVideoProcessorModes().
evr/mixer: Implement GetVideoProcessorCaps().
hlink: Use CRT allocation functions.
hlink: Return requested interface when creating IHlinkBrowseContext instance.
hlink: Return requested interface when creating IHlink instance.
hlink: Return correct requested interface from HlinkCreateFromMoniker().
hlink: Return requested interface from HlinkCreateFromString().
mfplat: Fix alignment used by audio buffers created with MFCreateMediaBufferFromMediaType().
wbemprox: Use CRT memory allocation functions.
wbemprox: Remove string duplication helper.
evr: Add IAMFilterMiscFlags interface.
d3dxof: Build without -DWINE_NO_LONG_TYPES.
d3dx10: Build without -DWINE_NO_LONG_TYPES.
ddrawex: Build without -DWINE_NO_LONG_TYPES.
ddrawex/tests: Build without -DWINE_NO_LONG_TYPES.
ddrawex/tests: Simplify refcount helper.
d3dxof/tests: Build without -DWINE_NO_LONG_TYPES.
d3dxof/tests: Simplify refcount helper.
ddraw: Build without -DWINE_NO_LONG_TYPES.
xmllite/tests: Use wide string literals.
gdi32: Use NtUserGetSysColor() directly.
dwrite/tests: Use safe table access helpers for GetFontSignature().
dwrite/tests: Fix context text.
wusa: Remove string duplication helper.
ddraw: Improve tracing format for unsigned fields.
Paul Gofman (5):
msvcp140: Implement _Copy_file().
kernelbase: Reset last error on success in CopyFileExW().
ntdll: Increase kernel stack size.
ntdll: Remove unused PTHREAD_STACK_MIN definition.
crypt32: Support CERT_QUERY_OBJECT_BLOB in CRYPT_QueryEmbeddedMessageObject().
Rafał Harabień (2):
user32: Use SWP_NOACTIVATE flag when resizing etched static control.
user32/tests: Remove duplicated SS_*RECT static control tests.
Rémi Bernon (23):
kernel32/tests: Add invalid pointer heap validation tests.
kernel32/tests: Add some GetProcessHeaps tests.
kernel32/tests: Add some HeapWalk tests.
kernel32/tests: Cleanup and add Heap(Query|Set)Information tests.
kernel32/tests: Add some HeapWalk tests for the LFH frontend.
kernel32/tests: Tweak tests results for w7pro64.
kernel32/tests: Reduce the number of GlobalAlloc size tests.
ntdll: Use a dedicated member for shared heap flag.
ntdll: Fix main heap struct layout and flags members.
kernelbase: Allocate global memory handle table dynamically.
include: Add Windows.Gaming.Input.RacingWheel runtimeclass declaration.
include: Remove nested namespaces in windows.gaming.input.forcefeedback.idl.
include: Add Windows.Gaming.Input.ForceFeedback.IForceFeedbackEffect interface declaration.
dinput/tests: Add tests for joystick with many axes and units.
dinput/tests: Add some IRawGameController_get_ForceFeedbackMotors tests.
dinput/tests: Queue IRP when the expect ret_status is STATUS_PENDING.
dinput/tests: Add more IForceFeedbackMotor and IAsyncOperation_boolean tests.
windows.gaming.input: Introduce Windows.Gaming.Input.RacingWheel activation factory.
windows.gaming.input: Implement IRacingWheelStatics interface for RacingWheel.
windows.gaming.input: Implement ICustomGameControllerFactory interface for RacingWheel.
windows.gaming.input: Implement IRacingWheelStatics2 interface for RacingWheel.
windows.gaming.input: Implement RacingWheel runtimeclass stub.
dinput/tests: Add some RacingWheel runtimeclass tests.
Timo Zuccarello (1):
winex11.drv: Do not assign reserved virtual key 0xE0 to key codes.
Zebediah Figura (27):
winegstreamer: Use WG_MAJOR_TYPE_UNKNOWN to mark a stream that should not be forced into a certain format.
winegstreamer: Explicitly disable streams in start_pipeline().
winegstreamer: Explicitly disable streams in parser_init_stream().
winegstreamer: Enable wg_parser streams on creation.
ntdll/tests: Add some tests for NtQueryDirectoryObject().
ntdll: Do not write the "context" parameter of NtQueryDirectoryObject on failure.
ntdll: Do not write the "ret_size" parameter of NtQueryDirectoryObject on failure.
server: Return STATUS_BUFFER_TOO_SMALL instead of STATUS_BUFFER_OVERFLOW from get_directory_entry.
kernelbase: Set user_lcid to the user locale, not the system locale.
ntdll: Return the required length from NtQueryDirectoryObject().
ntdll: Don't return STATUS_BUFFER_OVERFLOW if the buffer is too small to hold one entry.
ntdll: Write a null terminator in NtQueryDirectoryObject.
include: Add amva.h.
include: Add videoacc.idl.
quartz/tests: Test more VMR7 interfaces in all modes.
quartz/tests: Check for IAMVideoAccelerator.
quartz/vmr9: Stub IAMVideoAccelerator.
wined3d: Factor out context_gl_apply_texture_draw_state().
wined3d: Make wined3d_context_gl_set_draw_buffer() static.
user.exe: Implement SetSystemTimer() using SetTimer().
user32: Toggle the caret based on the timer ID in DispatchMessage().
user32: Update mouse tracking information based on the timer ID in DispatchMessage().
win32u: Remove the "proc" parameter to NtUserSetSystemTimer().
win32u: Do not call the lparam for WM_SYSTIMER messages.
user32: Do not call the lparam for WM_SYSTIMER messages.
setupapi: Avoid leaking subKey in SETUPDI_AddDeviceInterfaces().
ddraw/tests: Use winetest_push_context() in test_viewport().
Zhiyi Zhang (14):
include: Avoid a C++ keyword for RegisterUserApiHook().
kernel32/tests: Check against INVALID_HANDLE_VALUE for CreateActCtxW() return values.
kernel32/tests: Add more CreateActCtx() tests.
shell32: Activate context at ID 123 before loading control panel applets.
rundll32: Activate context at ID 123 before calling library functions.
appwiz.cpl: Enable visual styles.
inetcpl.cpl: Enable visual styles.
joy.cpl: Enable visual styles.
ieframe: Enable visual styles.
user32/tests: Avoid unnecessary display mode changes.
user32/tests: Test NUMCOLORS for display DCs.
win32u: Return -1 for NUMCOLORS with 8-bit display DCs.
include: Add windows.foundation.metadata.idl.
wintypes: Add stub dll.
Ziqing Hui (5):
d2d1/tests: Add tests for GetImageLocalBounds().
d2d1: Implement GetImageLocalBounds() for bitmap.
d2d1/tests: Add tests for context unit mode.
d2d1: Implement GetUnitMode().
d2d1: Implement SetUnitMode().
Alexandre Julliard has announced a new development version of Wine with more progress on the PE conversion of the X11 and OSS drivers, support for UTF-8 as default Ansi codepage, theming support for control panel applets, and various bug fixes.