The Wine development release 4.12 is now available.
What's new in this release (see below for details): - Still more DLLs are built as PE files by default. - Support for Plug & Play device drivers. - Better support for the Visual Studio remote debugger. - More support for enumerating display devices. - Various bug fixes.
The source is available from the following locations:
https://dl.winehq.org/wine/source/4.x/wine-4.12.tar.xz http://mirrors.ibiblio.org/wine/source/4.x/wine-4.12.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 4.12 (total 27):
18490 Multiple games fail to set pixel format on D3D device context created on desktop window (Empire: Total War, Napoleon: Total War, Utopia City) 21378 lego digital designer crashes on scrolling 27576 RT Se7en Lite installer hangs 31260 Tomb Raider 4 Broken Lighting 31737 Need For Speed Hot Pursuit (2010): Gamepad is not configured 34978 Many applications need a EnumDisplayDevicesW implementation for multi-monitor environment support (DisplayFusion, Turbo Tax 2012, WPF 4.x .NET apps, CEFv3 apps, VS Code < 1.16.0) 35413 err:module:import_dll Library libgcc_s_sjlj-1.dll not found needed by mono-2.0 36061 winedbg crash dialog shows a leak in imm32 37709 All Qt5 based applications have broken menu/combos positioning in multiple monitor setup due to GetMonitorInfo() returning the same hard-coded device name for all monitors 38421 Windows Media Player 9 & 10: mp3 sound plays too fast 41608 Golden Krone Hotel fails to launch (InitializeProcThreadAttributeList is a stub) 42374 Hardwood Solitaire can not connect to his server 45656 Acronis Storage Filter Management Driver 'fltsrv.sys' crashes on unimplemented function 'ntoskrnl.exe.KeBugCheckEx' in 'CrashOnError' mode 47013 winebus.sys: hidraw_set_feature_report buffer too small for some devices in SteelSeries Engine 47014 Multiple kernel drivers need 'ntoskrnl.exe.ExInitializePagedLookasideList' implementation (Norton 360/Symantec Eraser Control Driver) 47017 Symantec Eraser Control Driver 'eeCtrl64.sys' (Norton 360) crashes on unimplemented function ntoskrnl.exe.IoGetStackLimits 47340 Adobe Acrobat Reader DC crashes on startup with corefonts installed 47352 Levelhead: Can't connect to game's network 47367 Some WPF 4.x apps from Windows 10 SDK (10.0.17763.x) spam console with fixme:d3d:wined3d_driver_info_init Unhandled OS version 6.3, reporting Win 8. (WinVer set to 'Windows 8.1') 47385 Overwatch crashes on unimplemented function mfreadwrite.dll.MFCreateSinkWriterFromURL 47392 Drakensang Online crashes when exiting fullscreen 47399 Mozart 11-13 crashes on startup 47410 Regression in 4.10, Dune 2000 installer crashes in winevdm 47418 Quickbooks 2018 installer crashes on Validating Install 47424 DataTransferLength in SCSI_PASS_THROUGH and SCSI_PASS_THROUGH_DIRECT *must* have return value 47431 Multiple applications and games show too high CPU usage and UI slowness/lag with wine-4.11-84-g074abfe097 (EnumDisplayMonitors implementation uses expensive registry accesses) 47443 compile error: undefined reference to `clock_gettime'
----------------------------------------------------------------
Changes since 4.11:
Alexandre Julliard (127): t2embed: Build with msvcrt. tapi32: Build with msvcrt. taskschd: Build with msvcrt. tdh: Build with msvcrt. tdi.sys: Build with msvcrt. toolhelp: Build with msvcrt. traffic: Build with msvcrt. twain: Build with msvcrt. twain_32: Build with msvcrt. typelib: Build with msvcrt. uianimation: Build with msvcrt. uianimationcore: Build with msvcrt. uiribbon: Build with msvcrt. updspapi: Build with msvcrt. url: Build with msvcrt. urlmon: Build with msvcrt. ntdll: Try to use the name of the PE file also when loading .so builtin. advapi32: Move more event log stubs to ntdll. advapi32: Move SHA1 implementation to ntdll. advapi32: Move MD4 implementation to ntdll. advapi32: Move MD5 implementation to ntdll. usbd.sys: Build with msvcrt. user.exe: Build with msvcrt. userenv: Build with msvcrt. usp10: Build with msvcrt. uxtheme: Build with msvcrt. vbscript: Build with msvcrt. vcomp: Build with msvcrt. vdhcp.vxd: Build with msvcrt. vdmdbg: Build with msvcrt. ver: Build with msvcrt. version: Build with msvcrt. virtdisk: Build with msvcrt. vmm.vxd: Build with msvcrt. vnbt.vxd: Build with msvcrt. vnetbios.vxd: Build with msvcrt. vssapi: Build with msvcrt. vtdapi.vxd: Build with msvcrt. vulkan-1: Build with msvcrt. vwin32.vxd: Build with msvcrt. advapi32: Move registry functions to kernelbase. advapi32: Move sid functions to kernelbase. advapi32: Move token functions to kernelbase. advapi32: Move security descriptor functions to kernelbase. advapi32: Move access control functions to kernelbase. advapi32: Move performance stubs to kernelbase. winebuild: Set the default entry point also for Windows builds. w32skrnl: Build with msvcrt. w32sys: Build with msvcrt. wbemdisp: Build with msvcrt. wdscore: Build with msvcrt. webservices: Build with msvcrt. wer: Build with msvcrt. wevtapi: Build with msvcrt. wiaservc: Build with msvcrt. wimgapi: Build with msvcrt. win32s16: Build with msvcrt. win87em: Build with msvcrt. windebug: Build with msvcrt. windowscodecsext: Build with msvcrt. winehid.sys: Build with msvcrt. winemapi: Build with msvcrt. include: Implement some inline functions in C instead of assembly. wineps16.drv: Build with msvcrt. wing: Build with msvcrt. wing32: Build with msvcrt. winnls: Build with msvcrt. winnls32: Build with msvcrt. winscard: Build with msvcrt. winsock: Build with msvcrt. winsta: Build with msvcrt. wintab: Build with msvcrt. wintab32: Build with msvcrt. wintrust: Build with msvcrt. wlanapi: Build with msvcrt. wmasf: Build with msvcrt. wmiutils: Build with msvcrt. wmp: Build with msvcrt. wmphoto: Build with msvcrt. wmvcore: Build with msvcrt. wow32: Build with msvcrt. wpc: Build with msvcrt. wsdapi: Build with msvcrt. wshom.ocx: Build with msvcrt. wsnmp32: Build with msvcrt. wsock32: Build with msvcrt. wtsapi32: Build with msvcrt. wuapi: Build with msvcrt. wuaueng: Build with msvcrt. xinput1: Build with msvcrt. xmllite: Build with msvcrt. xolehlp: Build with msvcrt. xpsprint: Build with msvcrt. xpssvcs: Build with msvcrt. kernelbase: Get rid of some string helper functions. kernel32: Move lstr* string functions to kernelbase. kernel32: Move event functions to kernelbase. kernel32: Move mutex functions to kernelbase. kernel32: Move semaphore functions to kernelbase. kernel32: Move waitable timer functions to kernelbase. kernel32: Move timer queue functions to kernelbase. kernel32: Move critical section functions to kernelbase. kernel32: Move file mapping functions to kernelbase. kernel32: Move condition variable functions to kernelbase. kernel32: Move I/O completion functions to kernelbase. kernel32: Move named pipe functions to kernelbase. kernel32: Move wait functions to kernelbase. include: Avoid depending on wine/port.h. d3d8: Build with msvcrt. d3d9: Build with msvcrt. d3d11: Build with msvcrt. ddraw: Build with msvcrt. ntdll: Initialize filesystem redirects before kernel32 is loaded. d3dcompiler: Copy the C preprocessor source into d3dcompiler_43. d3dcompiler: Build with msvcrt. wpp: Get rid of the no longer needed callbacks. kernelbase: Forward functions directly to ntdll where possible. kernel32: Move resource functions to kernelbase. kernel32: Move activation context functions to kernelbase. configure: Error on unused command line argument to catch unknown options with clang. wineboot: Avoid using getopt_long(). kernel32: Set environment variables for the various Wine paths. wineps.drv: Build with msvcrt. wineboot: Build with msvcrt. setupapi: Build with msvcrt. appwiz.cpl: Build with msvcrt. mscoree: Build with msvcrt.
Alistair Leslie-Hughes (5): wininet: Support QueryOption INTERNET_OPTION_ERROR_MASK for http. wininet: Always set last error in HttpQueryInfoW. wininet: Always set last error in InternetReadFile. include: Complete IMimeHeaderTable/IMimeEnumHeaderRows interfaces. winebus.sys: Increase buffer size to match max length available.
André Hentschel (1): kernelbase: Return on failed allocation (Coverity).
Dmitry Timoshkov (3): ntdll: Add '-norelay' flag for _vsnprintf(). msvcrt: Add '-norelay' flag for _vsnprintf(). msvcrt: Fix handling of dst == src in wcscpy_s.
Ethan Lee (2): xaudio2: Add TRACE functions to CreateAudioReverb/CreateAudioVolumeMeter. xaudio2: Export functions by ordinal.
Fabian Maurer (2): kernel32/tests: Add sxs tests. ntdll: Check the activation context before looking for the module basename.
Hans Leidekker (10): wbemprox: Add support for parsing ASSOCIATORS OF queries. include: Use WS_ prefix with struct timeval. ntdll: Support NtQuerySystemInformation(SystemFirmwareTableInformation) on macOS. ntdll: Fix sysfs path for the product name. ntdll: Use a common structure for the SMBIOS table entry header. ntdll: Use the machine ID for the system UUID on Linux. wbemprox: Retrieve the system UUID from the SMBIOS table. wbemprox: Build with msvcrt. bcrypt: Ignore the size parameter in BCRYPT_CHAINING_MODE setters. wbemprox: Add support for CIM_REFERENCE.
Henri Verbeet (50): wined3d: Pass a wined3d_context_gl structure to find_arb_ps_compile_args(). wined3d: Pass a wined3d_context_gl structure to find_arb_vs_compile_args(). wined3d: Pass a wined3d_context_gl structure to wined3d_buffer_gl_bind(). wined3d: Pass a wined3d_context_gl structure to wined3d_buffer_gl_create_buffer_object(). wined3d: Move texture2d_load_drawable() to texture.c. wined3d: Pass a wined3d_context_gl structure to wined3d_buffer_gl_destroy_buffer_object(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_load_program_resources(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_init_transform_feedback(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_normalmatrix_uniform(). wined3d: Move texture2d_load_renderbuffer() to texture.c. wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_texmatrix_uniform(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_material_uniform(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_lightambient_uniform(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_ffp_vertex_light_uniform(). wined3d: Handle Windows 8.1 in wined3d_driver_info_init(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_pointsize_uniform(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_load_fog_uniform(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_clip_plane_uniform(). wined3d: Pass a wined3d_context_gl structure to shader_generate_glsl_declarations(). wined3d: Explicitly handle Windows 2 & 3 in wined3d_driver_info_init(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_pshader(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_vshader(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_hull_shader(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_domain_shader(). wined3d: Use Windows 7 as fallback driver version in wined3d_driver_info_init(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_geometry_shader(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_compute_shader(). wined3d: Pass a wined3d_context_gl structure to find_glsl_pshader(). wined3d: Pass a wined3d_context_gl structure to find_glsl_vshader(). ddraw: Use wined3d_bit_scan() in viewport_alloc_active_light_index(). wined3d: Pass a wined3d_context_gl structure to find_glsl_hull_shader(). wined3d: Pass a wined3d_context_gl structure to find_glsl_domain_shader(). wined3d: Pass a wined3d_context_gl structure to find_glsl_geometry_shader(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_generate_ffp_fragment_shader(). wined3d: Unhook swapchains in swapchain_cleanup(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_find_ffp_fragment_shader(). wined3d: Pass a wined3d_context_gl structure to shader_glsl_compile_compute_shader(). wined3d: Pass a wined3d_context_gl structure to find_glsl_compute_shader(). wined3d: Pass a wined3d_context_gl structure to set_glsl_compute_shader_program(). wined3d: Also try to create a depth/stencil buffer for WINED3D_NO3D devices in swapchain_init(). wined3d: Pass a wined3d_context_gl structure to set_glsl_shader_program(). wined3d: Pass a wined3d_context_gl structure to glsl_blitter_get_program(). wined3d: Pass a wined3d_context_gl structure to nvts_activate_dimensions(). wined3d: Pass a wined3d_context_gl structure to wined3d_query_create_buffer_object(). wined3d: Try harder to reuse the current context. wined3d: Pass a wined3d_context_gl structure to wined3d_query_destroy_buffer_object(). wined3d: Pass a wined3d_context_gl structure to wined3d_query_buffer_queue_result(). wined3d: Pass a wined3d_context_gl structure to wined3d_so_statistics_query_end(). wined3d: Pass a wined3d_context_gl structure to wined3d_pipeline_statistics_query_end(). wined3d: Merge wined3d_texture_download_data() and wined3d_texture_gl_download_data().
Jacek Caban (27): ntoskrnl.exe: Implement IoGetStackLimits. ntoskrnl.exe: Implement ExInitializePagedLookasideList. ntoskrnl.exe: Implement ExDeletePagedLookasideList. tdi.sys: Fix EXTRADLLFLAGS. ntoskrnl.exe: Implement KeBugCheck and KeBugCheckEx. mshtml/tests: Fix comment tests on recent IE versions. mshtml/tests: Introduce set_body_html helper. mshtml/tests: Merge text range tests. mshtml/tests: Rename elements.js to dom.js. mshtml/tests: Improve tests exception handling. mshtml: Include URL pathname and query in test traces. winedbg: Move continue_on_first_exception handling out of dbg_attach_debuggee. winedbg: Set auto attach event after processing the first exception. msxml3: Fix string length handling in I[VB]SAXContentHandler::characters. ntdll: Move null terminating result to pf_vsnprintf callers. ntdll: Implement _snprintf_s and _vsnprintf_s. kernel32/tests: Add more debugger tests. server: Fix debug event order in generate_startup_debug_events. kernel32: Terminate process in unhandled exception handler. ntdll: Implement DbgUiIssueRemoteBreakin. kernel32: Reimplement DebugBreakProcess on top of DbgUiIssueRemoteBreakin. winternl.h: Remove inline DbgBreakPoint version. kernel32: Use DebugBreakProcess in DebugActiveProcess. server: Remove no longer needed break_process. server: Rename cpu_type_t to client_cpu_t. winmm: Use condition variable to sleep in timer thread. winmm: Build with msvcrt.
Jactry Zeng (4): d3d8/tests: Add tests for 32-bit depth format support. d3d9/tests: Add tests for 32-bit depth format support. ddraw/tests: Add tests for 32-bit depth format support. wined3d: Drop support for WINED3DFMT_D32_UNORM.
Jeff Smith (2): d3drm: CreateViewport checks for non-NULL viewport pointer first. d3drm: Fix reference leak in d3drm_viewport2_Clear().
Justin Martin (1): d3d9: Implement d3d9_device_CreateRenderTargetEx().
Józef Kucia (2): d3d12/tests: Add test for creating swapchain on desktop window. dxgi: Forbid creating D3D12 swapchains on desktop window.
Ken Thomases (1): gdi32: Also accept "\.\DISPLAY<n>" devices names with <n> other than 1 as display devices.
Marcus Meissner (1): mshtml: Fixed buffer size to WideCharToMultiByte.
Michael Müller (1): wininet: Allow to set INTERNET_OPTION_HTTP_DECODING on sessions and connections.
Nikolay Sivov (20): mfplat: Improve PROPVARIANT arguments traces. mfplat: Add MF_LOW_LATENCY attribute GUID. mfreadwrite: Add MFCreateSinkWriterFromURL() stub. mshtml: Add IDocumentRange stub. user32/tests: Use SendInput() directly. user32/tests: Add another test for KEYEVENTF_UNICODE mode. server: Use KEYEVENTF_UNICODE mode only when virtual key code was not specified. mfplat: Trace MF_PD_DURATION guid. mshtml: Add IHTMLDOMRange stub. strmbase: Remove unused function. dwrite: Remove unused functions. shlwapi: Remove unused function. d2d1: Remove unused function. devenum: Don't free uninitialized pointer value. kernel32: Remove unused functions. quartz: Remove unused function. d3d10core/tests: Use d3d10 enumeration types. winegstreamer: Add stub Video Processor MFT. mf: Return clock rate as session rate. mf: Fix method name.
Paul Gofman (6): ddraw: Factor out fixup_texture_alpha_op() function. ddraw: Set _TSS_ALPHA_OP to _SELECT_ARG1 in case of NULL texture in fixup_texture_alpha_op(). d3d9/tests: Test sample and texture dimensions mismatch. wined3d: Do not modify shader register maps in backends. wined3d: Fixup 3D sampler when sampling 2D texture for PS models 2 and 3. wined3d: Fixup 2D sampler when sampling 3D texture for PS models 2 and 3.
Zebediah Figura (61): strmbase: Add default implementations of filter state change methods. quartz/filesource: Use strmbase filter state change methods. quartz/tests: Add more tests for standard media samples. quartz/memallocator: Clear some sample properties when freeing the sample. quartz/memallocator: Set the sample end time only if the start time is valid. quartz/memallocator: Forbid setting the start media time without setting the end time. quartz/memallocator: Avoid using a magic value for the start media time. quartz/memallocator: Return S_OK when clearing the media type. quartz/memallocator: Set the AM_SAMPLE_TYPECHANGED flag. wined3d: Store the cursor texture in a local variable in swapchain_gl_present(). wine.inf: Add the GUID_DEVCLASS_SYSTEM class key. ntoskrnl.exe: Add a stub PnP manager driver. ntoskrnl.exe: Load a driver's root PnP devices when the driver is started. setupapi: Delay-load user32. services: Load root PnP drivers on startup. qcap/vfwcapture: Store the source pin inline in the VfwCapture structure. qcap/vfwcapture: Don't expose IAMStreamConfig from the filter. quartz/parser: Don't store the sink pin in the "ppPins" array. quartz/parser: Store the source pins as an array of Parser_OutputPin pointers. quartz/vmr9: Return S_OK when calling IVMRFilterConfig9::SetNumberOfStreams(1). ntoskrnl.exe: Handle some no-op PnP requests. ntoskrnl.exe: Handle IRP_MN_QUERY_ID for root PnP devices. ntoskrnl.exe: Stub PoStartNextPowerIrp(). ntoskrnl.exe: Implement PoCallDriver(). qcap/tests: Add some tests for IBaseFilter::EnumPins on the AVI muxer. qcap/tests: Add some tests for IBaseFilter::FindPin() on the AVI mux filter. qcap/tests: Add some tests for querying AVI mux pin information. qcap/tests: Add some tests for AVI mux pin interfaces. qcap/tests: Add some more tests for AVI mux media types. setupapi: Also start newly installed root PnP services in SetupDiInstallDevice(). hidclass.sys: Detach the HID device before deleting it. quartz/tests: Add some tests for VMR7 media types. quartz/tests: Add some tests for VMR9 media types. quartz/tests: Add some tests for IEnumMediaTypes(). qcap/tests: Add some tests for IEnumMediaTypes(). qedit/tests: Add some tests for media types. qedit/tests: Add some tests for IEnumMediaTypes(). strmbase: Simplify IEnumMediaTypesImpl_Next(). strmbase: Fix implementation of IEnumMediaTypes::Skip(). msi: Close all handles opened by a custom action thread. ntdll: Correctly fill DataTransferLength in SCSI_PASS_THROUGH and SCSI_PASS_THROUGH_DIRECT. strmbase: Remove unused "ThreadSignal" event. strmbase: Rename "evComplete" to "state_event" for clarity. strmbase: Wait for the presentation time in BaseRendererImpl_Receive(). strmbase: Do not set RenderEvent in IBaseFilter::Run(). strmbase: Split RenderEvent into separate events for advising and flushing. quartz/dsoundrender: Use flush_event instead of reimplementing it. quartz/dsoundrender: Use BaseRendererImpl_Pause(). strmbase: Remove several unused callbacks. strmbase: Rename pfnOnStartStreaming to renderer_start_stream. strmbase: Rename pfnOnStopStreaming to renderer_stop_stream. ntoskrnl.exe: Use the registered interface class in IoSetDeviceInterfaceState(). user32/tests: Test opening raw input devices. services: Report a PID of 0 for drivers. services: Do not overwrite the service type in SetServiceStatus(). winebus.sys: Create a stub mouse device. winehid.inf: Add WINEMOUSE to the list of winehid device IDs. include: Add ntddmou.h. hidclass.sys: Create a mouse device interface for HID mouse devices. user32: Introduce and use an array_reserve() helper. user32: Factor out add_device().
Zhiyi Zhang (10): user32: Move EnumDisplayDevicesA/W to sysparams.c. user32: Avoid a possible race. dxgi/tests: Add more IDXGISwapChain_Present() tests. dxgi: Return DXGI_STATUS_OCCLUDED for minimised windows in d3d11_swapchain_present(). dxgi/tests: Add IDXGIOutput ownership tests. winex11.drv: Use generic EnumDisplayMonitors. winex11.drv: Use generic GetMonitorInfo. winex11.drv: Specify enumerator when calling SetupDiGetClassDevsW. user32: Specify enumerator when calling SetupDiGetClassDevsW. user32: Cache monitor information.
-- Alexandre Julliard julliard@winehq.org