The Wine development release 3.17 is now available. What's new in this release (see below for details): - Improved Shell Autocomplete support. - More implementation of OPC Services. - Improvements to the Pager common control. - Various bug fixes. The source is available from the following locations: https://dl.winehq.org/wine/source/3.x/wine-3.17.tar.xz http://mirrors.ibiblio.org/wine/source/3.x/wine-3.17.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 3.17 (total 36): 18271 MSI creates incompatible msi file in a specific case of create table 22995 Adobe FrameMaker 8 installer displays complaint about installation path drive type 23487 Buccaneer: freezes when changing screen resolution 25617 Clones CreateDrawingStateBlock 45831 Slack installer (Squirrel) fails:Unhandled Exception: System.AccessViolationException:at MS.Win32.PresentationCore.UnsafeNativeMethods.WICMetadataQueryReader.ContainsMetadataByName 45832 Windower 5 beta (FF XI tool) crash: Unhandled Exception: System.NotImplementedException at Windower.UI.Views.RootView.OnSourceInitialized (DwmExtendFrameIntoClientArea should return S_OK) 45833 Paint.net (4.1.*) installer fails with error messagebox: System.NotImplementedException: d2ddevicecontext.cpp (228) : hr = pDeviceContext->CreateBitmapBrush 45845 Microsoft Office 2010: installer crashes at the beginning of the installation process 45848 Assassin's Creed Chronicles: China - player model rendering issues in DX11 mode 45849 Paint.net (4.1.*) installer fails with error messagebox: System.NotImplementedException: d2ddevicecontext.cpp (326) : hr = m_pDeviceContext->CreateEffect( apBrush 45861 PhaseOne CaptureOne 11.2 (.NET 4.7 app) crashes on unimplemented function mscms.dll.WcsGetUsePerUserProfiles ---------------------------------------------------------------- Changes since 3.16: Alex Henrie (9): kernel32: Add DECLSPEC_HOTPATCH to functions patched by libtcmalloc. ntdll: Add DECLSPEC_HOTPATCH to functions patched by libtcmalloc. oleaut32: Add DECLSPEC_HOTPATCH to functions patched by MS Word 2010. msvcrt: Add DECLSPEC_HOTPATCH to functions patched by libtcmalloc. wmp/tests: Destroy the window before calling CoUninitialize. imm32: Avoid using GCC's typeof extension. gdi32: Avoid using GCC's typeof extension. msvcrt: Use isnan instead of isnanf. riched20: Avoid using GCC's typeof extension. Alexandre Julliard (19): server: Avoid potential size overflow for empty object attributes. ntoskrnl/tests: Fix error check that fails on Windows. server: Align object attributes to a DWORD-boundary. server: Allow specifying the security descriptor for a new thread. server: Move initial thread creation out of the create_process() function. server: Specify the process in which to create a new thread. server: Create the initial thread as a separate request. server: Allow specifying the security descriptor for a new process. server: Store the process exe file in the process structure. server: Don't return the process exe file to the client. server: Return more specific error status for NE binaries. kernel32: Reimplement GetBinaryTypeW to rely on the server for header parsing. kernel32: Remove the DOS/Win16/OS2 binary distinction. kernel32: Move MODULE_get_binary_info implementation to process.c. kernel32: Retrieve binary information from the server for PE files. kernel32: Determine 32/64-bitness from the PE architecture. kernel32: Return the binary type from get_binary_info(). kernel32: Get rid of the binary_info structure. kernel32: Create a fresh PE info structure when running winevdm. Alistair Leslie-Hughes (3): kernel32/tests: Tests for ProcessCookie in NtQueryInformationProcess. mfplat: Add MFCopyImage stub. dsound: Don't trace current thread ID. Andrew Eikum (1): winedbg: In gdbproxy file, allow wine paths with spaces. Andrew Wesie (3): ntdll: Stub for ProcessCookie in NtQueryInformationProcess. wined3d: Remove extraneous flush from EndScene. wined3d: Use query buffer objects for occlusion queries. André Hentschel (5): advapi32/tests: Allow ERROR_ACCESS_DENIED for newer Win10. qcap/tests: AVICo might be unavaiable on newer Win10. kernel32: Add stub for SetProcessWorkingSetSizeEx. user32/tests: Allow newer Win10 behaviour. wininet/tests: Skip tests when querying INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT fails (newer win10). Austin English (2): winscard: Add SCardCancel stub. iphlpapi: Add GetIpNetTable2 stub. Dmitry Timoshkov (9): windowscodecs: IWICMetadataQueryReader::GetMetadataByName() should accept NULL for returned value. msi: Fix a typo. msi: Move parameter checks to a common helper in MsiSummaryInfoSetProperty. msi: Do not attempt to copy a non-string property in MsiSummaryInfoGetProperty. msi/tests: Also test full range of properties for MsiSummaryInfoSetPropertyW. msi/tests: Add a test for repetitive MsiGetActiveDatabase calls. ntdll/tests: Fix compilation with PSDK. ntdll/tests: Clarify some file disposition test results, remove useless tests. ntdll/tests: Add more file disposition tests. Fabian Maurer (5): comctl32/taskdialog: Use parentheses around & operator. opcservices: Add missing break (coverity). oleview: Add missing break (coverity). shell32/brsfolder: Add shortcut to rename folders with the F2 key. shell32/brsfolder: Add shortcut to delete folders with the delete key. François Gouget (6): msxml3/tests: Make test_namespaces_as_attributes() static. mshtml: Make HTMLStyle_init_dispex_info() static. winhttp: Make winsock_init() static. winebus.sys: Add a trailing '\n' to a TRACE(). quartz/tests: Make testpin_{AddRef,Release}() static. wined3d: Modernize the macOS spelling. Gabriel Ivăncescu (20): shell32/autocomplete: Move the autocomplete processing and WM_KEYUP to separate functions. shell32/autocomplete: Redesign the window proc to trigger on key presses instead of key release. shell32/autocomplete: Don't auto-append on control characters. shell32/autocomplete: Simplify a calculation. shell32/autocomplete: Avoid another buffer overflow and handle arbitrary sizes for the auto-append string. shell32/autocomplete: Remove the property after replacing the callback instead of before. shell32/tests: Send WM_CHAR instead of WM_KEYUP. shell32/autocomplete: Fix going up through the suggestion listbox. shell32/autocomplete: Handle more messages for autocompletion. shell32/autocomplete: Forward to the edit control outside of the switch to simplify the code. shell32/autocomplete: Don't autocomplete at all on most control characters. shell32/autocomplete: Send some messages directly to the edit control's procedure. shell32/autocomplete: Handle WM_SETTEXT for autocompletion. shell32/autocomplete: Pass hwnd for consistency with the other calls. shell32/tests: Test hijacking the edit control's procedure after AutoComplete. shell32/autocomplete: Remove flicker while redrawing the AutoComplete listbox. shell32/autocomplete: Use 0 instead of CW_USEDEFAULT. shell32/autocomplete: Use the same font for the AutoComplete listbox as the edit control. shell32/autocomplete: Don't auto-append unless the caret is at the end. shell32/autocomplete: Implement PageDown and PageUp for the auto-suggest listbox. Gijs Vermeulen (2): kernel32: Add GetQueuedCompletionStatusEx stub. Revert "kernel32: Add GetQueuedCompletionStatusEx stub.". Hans Leidekker (6): msi/tests: Drop workarounds for Windows 2000. msi: Allow recursive changes to the target folder path. appwiz.cpl: Read more application attributes from the registry. msi/tests: SQLGetInstalledDrivers fails if there are no ODBC drivers installed. msi: Add support for ARPNOMODIFY, APRNOREMOVE and ARPNOREPAIR. wbemprox: Implement StdRegProv.CreateKey. Henri Verbeet (27): wined3d: Make the resource parameter to wined3d_resource_get_decompress_format() const. wined3d: Get rid of the "format_count" field from struct wined3d_adapter. wined3d: Properly initialise the driver info in wined3d_adapter_no3d_init(). wined3d: Reorder the formats in debug_d3dformat() to match the enum order. wined3d: Store the NPOT texture capabilities in struct wined3d_d3d_info. wined3d: Rename "wined3d_adapter_opengl" to "wined3d_adapter_gl". wined3d: Disallow creating devices without adapters in wined3d_device_create(). wined3d: Move the OpenGL vertex format to a separate structure. wined3d: Move the OpenGL view class to struct wined3d_format_gl. d3d8/tests: Properly check whether creating a device succeeded in test_flip(). d3d9/tests: Properly check whether creating a device succeeded in test_flip(). wined3d: Accept "renderer" in addition to "DirectDrawRenderer". wined3d: Introduce WINED3DFMT_FLAG_BLIT. wined3d: Move the OpenGL texture format to struct wined3d_format_gl. d2d1: Introduce a debug helper for D2D1_POINT_2F. ddraw: Do not report IID_IDirect3DHALDevice in ddraw_find_device() with DDRAW_NO3D. wined3d: Do not report WINEDDSCAPS_VIDEOMEMORY for WINED3D_NO3D adapters. ddraw: Reject creating DDSCAPS_VIDEOMEMORY surfaces with DDRAW_NO3D. wined3d: Store the wined3d creation flags for NO3D adapters as well. wined3d: Support NPOT textures on NO3D adapters. wined3d: Set a feature level for NO3D adapters. wined3d: Get rid of the "pointsize_min" and "pointsize_max" fields from struct wined3d_gl_limits. wined3d: Move "texture_size" from struct wined3d_gl_limits to struct wined3d_d3d_limits. ddraw: Do not request 3D-usages for DDRAW_NO3D surfaces. wined3d: Do not create DCs for all textures on WINED3D_NO3D adapters. ddraw: Only do asynchronous clears when the application asked for them. ddraw: Check for DDRAW_NO3D before checking for a video memory surface in d3d_device_create(). Huw D. M. Davies (2): setupapi: For consistency use __x86_64__ instead of __x86_64. msvcp90: Remove unnecessary check for __arm__. Jacek Caban (3): winhttp: Modify index only if query_headers succeeded. winhttp: Set last error in WinHttpQueryAuthSchemes when no auth scheme is found. user32: Make sure that passed window handle is scroll control before accessing wExtra in SCROLL_GetInternalInfo. Jactry Zeng (3): include: Add ITextDocument2Old and ITextDocument2 interface. riched20: Add stub for ITextDocument2Old interface. msftedit: Add tests for interfaces. Jason Edmeades (1): msvcrt: Do not put cmd.exe special environment variables into the environ. Jim Mussared (1): comctl32/listview: Fix subitem invalidation. Joris van der Wel (1): advapi32/tests: Add additional tests for passing a thread sd to CreateProcess. Józef Kucia (44): wined3d: Use get_format_internal() to get WINED3DFMT_UNKNOWN. wined3d: Add missing formats to debug_d3dformat(). wined3d: Store additional flags directly in wined3d_format_block_info. wined3d: Initialise typeless_id for typeless formats early. wined3d: Initialise typeless formats after all formats properties are initialised. wined3d: Move get_flexible_vertex_size() to device.c. wined3d: Cleanup get_flexible_vertex_size(). include: Add d3d11on12 header. d3d11: Add D3D11On12CreateDevice() stub. wined3d: Implement vCoverage register. wined3d: Apply legacy format swizzles only when requested. d3d11/tests: Add a few more tests for texture formats. dxgi: Factor out dxgi_validate_swapchain_desc(). dxgi: Validate swapchain desc in d3d12_swapchain_ResizeBuffers(). dxgi: Validate formats for flip presentation model. dxgi: Add support for DXGI_FORMAT_R16G16B16A16_FLOAT D3D12 swapchains. dxgi/tests: Add test for swapchain formats. dbghelp: Fix memory leak in SymInitializeW() (Coverity). user32: Call DefWindowProc() in DesktopWndProc(). user32/tests: Add test for desktop window procedure. dxgi/tests: Add test for swapchain window messages. dxgi/tests: Add test for swapchain window styles. dxgi/tests: Avoid "skipping tests" in skip() messages. wined3d: Introduce get_format_by_idx() helper function. wined3d: Introduce separate function for OpenGL formats initialisation. wined3d: Add support for variable-sized format structures. wined3d: Allocate memory for formats in wined3d_adapter_init_format_info(). wined3d: Store max_clip_distances in struct d3d_info. dxgi: Introduce wined3d_feature_level_from_d3d() helper function. wined3d: Make feature level enum compatible with Direct3D enum. wined3d: Add remaining feature levels. wined3d: Pass feature levels to wined3d_device_create(). wined3d: Introduce wined3d_device_get_feature_level(). dxgi: Get rid of set_feature_level() from dxgi_device_layer. dxgi: Simplify dxgi_adapter_GetDesc(). dxgi: Merge dxgi_check_feature_level_support() into dxgi_adapter_CheckInterfaceSupport(). wined3d: Cleanup fallback cards list. d3d11: Trace skipped DXBC chunks. wined3d: Derive allowed shader versions from the current feature level. wined3d: Add GL_ARB_shader_viewport_layer_array extension. d3d10core/tests: Add test for staging buffers. d3d10core/tests: Add a few more tests for texture formats. d3d10core/tests: Use SetRect() in more places. d3d11/tests: Use SetRect() in more places. Louis Lenders (3): dwmapi: Return S_OK in DwmExtendFrameIntoClientArea. mscms: Add stub for WcsGetUsePerUserProfiles. mscms: Update spec to Windows 7. Michael Stefaniuc (11): setupapi: Use the ARRAY_SIZE() macro. shlwapi: Avoid a temporary variable. shlwapi: Avoid ARRAY_SIZE-like macros. shlwapi: Use the ARRAY_SIZE() macro. uxtheme: Use the ARRAY_SIZE() macro. winex11.drv: Use the ARRAY_SIZE() macro. winmm: Use the ARRAY_SIZE() macro. wininet: Avoid an ARRAY_SIZE-like macro. wininet: Use the ARRAY_SIZE() macro. winhttp: Avoid a variable that holds an ARRAY_SIZE() result. winhttp: Use the ARRAY_SIZE() macro. Nikolay Sivov (40): d2d1: Implement GetSurface() for bitmaps. include: Add ID2D1BitmapBrush1 definition. comctl32/button: Fix text buffer leak (Coverity). propsys: Add InitPropVariantFromCLSID(). xmllite/writer: Fix "xml:space" output. opcservices/tests: Fix copy-pasted copyright line. d2d1: Update to ID2D1BitmapBrush1. d2d1: Implement newer CreateBitmapBrush() variant. include: Add ID2D1Effect definition. urlmon/tests: Add IsEqual test for custom IUri implementation. opcservices/uri: Fix IsEqual() to work with OPC URI objects. opcservices/tests: Add some GetRelativeUri() tests. opcservices: Fix path used for part URIs. opcservices: Implement CombinePartUri(). opcservices: Write package parts. opcservices: Write relationship parts. opcservices: Improve error handling (Coverity). opcservices: Implement GetPart(). opcservices: Implement PartExists(). opcservices: Write full content type stream. d2d1: Implement CreateBitmapFromDxgiSurface(). opcservices: Improve parameter validation in CreateRelationship(). opcservices: Enforce unique relationship id. opcservices: Initialize archive write position. opcservices: Fix relationship stream names. opcservices: Add content type entry for relationship parts. opcservices: Write relationship stream for parts. opcservices: Update content stream position on Read(). xmllite/writer: Fix writing prefixed attributes. dwrite/layout: Test resulting line width before adding inline trimming run. d2d1: Fix compatible target initialization. d2d1/tests: Test that device is reused for compatible targets. d2d1: Implement GetDevice() for device context. crypt32/base64: Fix certificate request header and trailer in CryptBinaryToStringW() output. crypt32: Fix NULL output buffer handling for CryptBinaryToString(). crypt32: Fix output buffer handling for CRYPT_STRING_BINARY case. crypt32: Fix formatted output length for base64. d2d1: Add ID2D1Effect stub. d2d1: Use surface format for shared bitmap if it wasn't specified. crypt32: Add CRYPT_STRING_BINARY mode for CryptBinaryToStringW(). Owen Rudge (6): wsdapi: Ignore duplicate messages. wsdapi: Implement matching of names in MatchProbeEx. wsdapi: Implement generation of ProbeMatches message. wsdapi: Send Probe Matches message via UDP unicast. wsdapi: Don't include null character at the end of sent messages. wsdapi: Prefer Wine version. Piotr Caban (5): ole32: Initialize more FORMATETC fields using InitFormatEtc helper. ole32: Add IDataObject_GetData tests on synthesized format. ole32: Change DataObjectImpl_GetData return value to show more implementation problems. ole32: Improve OleClipboardData GetData implementation. ole32: Add more IStorage clipboard tests. Ricky Zhou (1): winemac: Allow Command to be mapped to Ctrl. Sven Baars (2): user32/tests: Use the correct procedure for dialog tests (Valgrind). comctl32: Add NULL checks to SetWindowSubclass (Valgrind). Zebediah Figura (37): rpcrt4/tests: Add tests for delegated proxy methods. ole32: Use the real proxy IID in ClientRpcChannelBuffer_GetBuffer(). quartz/filtergraph: Return correct interface for IID_IGraphVersion. quartz/tests: Add some tests for IFilterGraph_EnumFilters(). quartz/filtergraph: Factor out find_filter_by_name(). quartz: Merge enumfilters.c into filtergraph.c. quartz/filtergraph: Pass an IFilterGraphImpl to create_enum_filters(). quartz/filtergraph: Use a linked list to store filters. quartz/tests: Rewrite test_render_filter_priority(). quartz/tests: Test interfaces exposed by the filter graph. quartz/tests: Add some tests for IFilterGraph_Add/RemoveFilter(). quartz/filtergraph: Unset the name of a removed filter. quartz/tests: Add some tests for IFilterGraph_FindFilterByName(). quartz/tests: Get rid of test_graph_builder(). quartz/tests: Add some tests for IFilterGraph_ConnectDirect() and IFilterGraph_Disconnect(). quartz/tests: Add some tests for IGraphBuilder_Connect(). quartz/filtergraph: Don't use QueryInternalConnections() to find output pins in FilterGraph2_Connect(). quartz/filtergraph: Try filters in the graph first in FilterGraph2_Connect(). quartz/filtergraph: Check pin name instead of id in connect_output_pin(). quartz/filtergraph: Try other output pins if one shouldn't be rendered. quartz/filtergraph: Simplify FilterGraph2_RenderRecurse(). quartz/filtergraph: Don't recursively render pins whose names begin with ~. dbghelp/dwarf: Use debugstr_a() to trace external strings. devenum: Factor friendly name and CLSID registration into register_codec(). devenum: Register AVI capture devices as codec devices. devenum: Only scan for devices for the requested filter category. quartz/filtergraph: Improve HRESULT propagation from IFilterGraph2_Connect(). quartz/tests: Add some tests for IMediaFilter_SetSyncSource() and IMediaFilter_GetSyncSource(). quartz/filtergraph: Also set the default sync source if necessary in IMediaControl_Pause(). quartz/tests: Add some tests for filter states. quartz/filtergraph: Implement IMediaControl state functions on top of IMediaFilter. quartz/tests/filtergraph: Add some tests for EC_COMPLETE. quartz/filtergraph: Check for AM_FILTER_MISC_FLAGS_IS_RENDERER or IMediaSeeking to count renderers. quartz/tests: Move file source filter tests to filesource.c. quartz/tests/filesource: Test interfaces exposed by the file source filter. quartz/filesource: Don't expose IAMFilterMiscFlags. strmbase: Fix implementation of IEnumPins_Skip(). Zhiyi Zhang (10): wineboot: Create user folders if they don't exist. comdlg32/tests: Fix crashes. comdlg32: Check invalid options in IFileDialog::SetOptions. comdlg32/tests: Fix failures on newer Windows 10. comctl32/pager: Support toolbar notification conversion. comctl32/pager: Support tooltip notification conversion. comctl32/pager: Support comboboxex notification conversion. comctl32/pager: Support date time picker notification conversion. comctl32/pager: Support list view notification conversion. comctl32/pager: Support tree view notification conversion. -- Alexandre Julliard julliard@winehq.org