1 The Wine development release 9.11 is now available.
3 What's new in this release:
4 - C++ exception handling on ARM platforms.
5 - More DPI Awareness support improvements.
8 The source is available at <https://dl.winehq.org/wine/source/9.x/wine-9.11.tar.xz>
10 Binary packages for various distributions will be available
11 from <https://www.winehq.org/download>
13 You will find documentation on <https://www.winehq.org/documentation>
15 Wine is available thanks to the work of many people.
16 See the file [AUTHORS][1] for the complete list.
18 [1]: https://gitlab.winehq.org/wine/wine/-/raw/wine-9.11/AUTHORS
20 ----------------------------------------------------------------
22 ### Bugs fixed in 9.11 (total 27):
24 - #42270 Settlers 4 Gold - Hardware Rendering mode not working
25 - #49703 Ghost Recon fails to start
26 - #50983 Multiple games stuck playing cutscenes (The Long Dark, The Room 4: Old Sins, Saint Kotar)
27 - #51174 api-ms-win-core-version-l1-1-0: Missing GetFileVersionInfoW and GetFileVersionInfoSizeW
28 - #52585 Multiple applications need NtQueryDirectoryObject to return multiple entries (Cygwin shells, WinObj 3.01)
29 - #53960 ucrt has different struct layout than msvcrt
30 - #54615 dwrite:layout - test_system_fallback() gets unexpected "Meiryo UI" font name in Japanese and Chinese on Windows
31 - #55362 NeuralNote: Crashes and Rendering issues (alson in VST3 form)
32 - #55472 DTS Encoder Suite gets stuck with encode pending from Wine 8.14
33 - #56095 Clanbomber 1.05 starts after a long (30 seconds) delay
34 - #56397 Numlock status not recognized when using winewayland.drv
35 - #56451 catch block fetches bogus frame when using alignas with 32 or higher
36 - #56460 Multiple games have stutter issues (Overwatch 2, Aimbeast)
37 - #56591 Steam doesn't render individual game pages correctly
38 - #56606 PhysX installer fails to start
39 - #56640 Genshin Impact: The game-launcher cannot be started anymore
40 - #56744 Serial number in smbios system table is not filled on Linux in practice
41 - #56747 Steam won’t load in the new wow64 mode when using DXVK
42 - #56755 White textures in EverQuest (Unsupported Conversion in windowscodec/convert.c)
43 - #56764 Empire Earth Gold doesn't start in virtual desktop mode
44 - #56766 CDmage 1.01.5 does not redraw window contents fully
45 - #56781 srcrrun: Dictionary setting item to object fails
46 - #56788 ComicRackCE crashes when viewing "info" for a comic file
47 - #56800 Nomad Factory plugins GUI is broken
48 - #56813 Hard West 2 crashes before entering the main menu (OpenGL renderer)
49 - #56824 Postal 2 (20th Anniversary update) crashes when loading the map
50 - #56828 Moku.exe crashes on startup
52 ### Changes since 9.10:
55 wineserver: Report non-zero exit code for abnormal process termination.
58 ntdll/tests: Delete the WineTest registry key when the tests finish.
59 ntdll/tests: Rewrite the RtlQueryRegistryValues tests and add more of them.
60 ntdll: Succeed in RtlQueryRegistryValues on direct query of nonexistent value.
61 ntdll: Don't call QueryRoutine if RTL_QUERY_REGISTRY_DIRECT is set.
62 ntdll: Don't call a null QueryRoutine in RtlQueryRegistryValues.
63 ntdll/tests: Remove unused WINE_CRASH flag.
64 ntdll: Copy the correct number of bytes with RTL_QUERY_REGISTRY_DIRECT.
65 ntdll: Calculate the default size even without RTL_QUERY_REGISTRY_DIRECT.
66 ntdll: Don't accept a query routine when using RTL_QUERY_REGISTRY_DIRECT.
67 ntdll: Set the string size when using RTL_QUERY_REGISTRY_DIRECT.
68 ntdll: Only allow string default values with RTL_QUERY_REGISTRY_DIRECT.
69 ntdll: Replace the whole string when using RTL_QUERY_REGISTRY_DIRECT.
71 Alexandre Julliard (40):
72 faudio: Import upstream release 24.06.
73 msvcrt: Share a helper macro to print an exception type.
74 msvcrt: Share the dump_function_descr() helper between platforms.
75 msvcrt: Fix the ip_to_state() helper for out of bounds values.
76 msvcrt: Don't use rva_to_ptr() for non-RVA values.
77 msvcrt: Use the copy_exception() helper in __CxxExceptionFilter.
78 msvcrt: Share the __CxxExceptionFilter implementation between platforms.
79 msvcrt: Share the common part of _fpieee_flt between platforms.
80 msvcrt: Consistently use the rtti_rva() helper.
81 winedump: Fix dumping of catchblocks for 32-bit modules.
82 msvcrt: The catchblock frame member isn't present on 32-bit.
83 msvcrt: Use pointer-sized types instead of hardcoding 64-bit in __CxxFrameHandler.
84 msvcrt: Share __CxxFrameHandler implementation with ARM platforms.
85 msvcrt: Add platform-specific helpers to call C++ exception handlers.
86 msvcrt: Add platform-specific helpers to retrieve the exception PC.
87 msvcrt: Use platform-specific handlers also for __CxxFrameHandler4.
88 ntdll: Fix stack alignment in __C_ExecuteExceptionFilter on ARM.
89 ntdll: Fix a couple of compiler warnings on ARM64EC.
90 ntdll: Fix inverted floating point masks on ARM64EC.
91 ntdll: Support x87 control word in __os_arm64x_get_x64_information().
92 kernel32/tests: Add test for FPU control words on ARM64EC.
93 msvcrt: Reimplement __crtCapturePreviousContext() based on RtlWalkFrameChain().
94 msvcrt: Use the __os_arm64x functions to get/set mxcsr on ARM64EC.
95 msvcrt: Implement asm sqrt functions on ARM platforms.
96 msvcrt: Disable SSE2 memmove implementation on ARM64EC.
97 kernelbase: Implement the GetProcAddress wrapper on ARM64EC.
98 kernel32: Implement the GetProcAddress wrapper on ARM64EC.
99 winex11: Fix build error when XShm is missing.
100 ntdll: Look for hybrid builtins in the PE directory for the host architecture.
101 ntdll: Remove some unnecessary asm macros on ARM plaforms.
102 winecrt0: Remove some unnecessary asm macros on ARM plaforms.
103 makedep: Build and install ARM64EC-only modules.
104 tests: Use ARM64 as architecture in manifests on ARM64EC.
105 ntdll: Also load arm64 manifests for amd64 architecture on ARM64EC.
106 ntdll: Reimplement __os_arm64x_check_call in assembly.
107 ntdll: Move some security Rtl functions to sec.c.
108 ntdll: Move some synchronization Rtl functions to sync.c.
109 ntdll: Move the error mode Rtl functions to thread.c.
110 ntdll: Move the PEB lock Rtl functions to env.c.
111 ntdll: Move the memory copy Rtl functions to string.c.
113 Alexandros Frantzis (4):
114 server: Pass desktop to get_first_global_hook.
115 server: Check message target process for raw input device flags.
116 server: Implement key auto-repeat request.
117 win32u: Implement keyboard auto-repeat using new server request.
119 Alistair Leslie-Hughes (2):
120 odbccp32: Check if a full path was supplied for Driver/Setup/Translator entries.
121 odbccp32: Stop handle leak on error paths.
124 windowscodecs: Add conversions from PixelFormat32bppBGRA->PixelFormat16bppBGRA5551.
127 kernel32/tests: Test error code when FindFirstFileA uses file as directory.
128 ntdll/tests: Test error code when NtOpenFile uses file as directory.
129 server: Don't always return STATUS_OBJECT_NAME_INVALID on ENOTDIR.
130 ntdll: Treat XDG_SESSION_TYPE as special env variable.
133 ntdll: On macOS, check for xattr existence before calling getxattr.
136 d3dx9: Refactor WIC GUID to D3DXIMAGE_FILEFORMAT conversion code.
137 d3dx9: Refactor WIC image info retrieval code in D3DXGetImageInfoFromFileInMemory().
138 d3dx9: Introduce d3dx_image structure for use in D3DXGetImageInfoFromFileInMemory().
139 d3dx9: Use d3dx_image structure in D3DXLoadSurfaceFromFileInMemory().
140 d3dx9: Introduce d3dx_load_pixels_from_pixels() helper function.
141 d3dx9: Use d3dx_pixels structure in decompression helper function.
142 d3dx9: Use d3dx_load_pixels_from_pixels() in D3DXLoadVolumeFromMemory().
145 secur32: Allow overriding GnuTLS debug level.
146 bcrypt: Allow overriding GnuTLS debug level.
147 crypt32: Allow overriding GnuTLS debug level.
150 wineps.drv: Call ResetDCW() to update Devmode in the Unix interface.
151 opcservices: Provide memory allocator functions to zlib.
152 opcservices: Suppress unnecessary zlib deflate warnings.
153 opcservices: Check for memory allocation failure before deflating.
155 Dmitry Timoshkov (2):
156 server: Remove limitation for waiting on idle_event of the current process.
157 win32u: Limit GDI object generation to 128.
159 Elizabeth Figura (25):
160 widl: Assign to the right location variable.
161 widl: Allow using UDTs with the keyword even when the identifier is also a typedef.
162 widl: Invert "declonly".
163 widl: Factor out a define_type() helper.
164 widl: Update the type location in define_type().
165 widl: Do not write type definitions for types defined in an imported header.
166 include: Add more types to windows.networking.connectivity.idl.
167 wined3d: Update multisample state when the sample count changes.
168 wined3d: Invalidate the vertex shader when WINED3D_FFP_PSIZE is toggled.
169 wined3d: Just check the vertex declaration for point size usage.
170 wined3d: Just check the vertex declaration for colour usage.
171 wined3d: Just check the vertex declaration for normal usage.
172 wined3d: Just check the vertex declaration for texcoord usage.
173 wined3d: Default diffuse to 1.0 in the vertex shader.
174 server: Ignore attempts to set a mandatory label on a token.
175 server: Inherit the source token's label in token_duplicate().
176 advapi32/tests: Test token label inheritance.
177 wined3d: Handle a null vertex declaration in glsl_vertex_pipe_vdecl().
178 wined3d: Always output normalized fog coordinates from the vertex shader.
179 wined3d: Do not create a framebuffer with attachments whose clear is delayed.
180 wined3d: Use separate signature elements for oFog and oPts.
181 server: Don't set error in find_object_index if the object is not found.
182 ntdll: Implement reading multiple entries in NtQueryDirectoryObject.
183 server: Generalize get_directory_entries to single_entry case.
184 ntdll: Move IOCTL_SERIAL_WAIT_ON_MASK to the server.
187 cmd: Introduce a helper to set std handles.
188 cmd: Introduce structure CMD_REDIRECTION.
189 cmd: Create helper to execute a command.
190 cmd: Let errorlevel be a signed integer.
191 cmd: Separate IF command parsing from execution.
192 kernelbase/tests: Fix typo in tests.
193 msvcrt/tests: Don't print a NULL string.
194 quartz/tests: Fix typo in tests.
195 quartz/tests: Add new tests about fullscreen handling.
196 quartz: Always expose that non fullscreen mode is supported and active.
197 quartz: Fix result in put_FullScreenMode().
198 conhost: Handle WM_CHAR for window console.
199 conhost: Support IME input in window mode.
202 win32u: Send EVENT_OBJECT_FOCUS in more cases.
203 win32u: Implement EVENT_OBJECT_LOCATIONCHANGE.
204 gdiplus: Fix DIB stride calculation in GdipDrawImagePointsRect.
205 win32u: Implement EVENT_SYSTEM_MINIMIZESTART/END.
208 msvcrt: Fix _libm_sse2_sqrt_precise not using SSE2 sqrt.
209 mmdevapi/tests: Add tests for IAudioSessionControl2 GetDisplayName / SetDisplayName.
210 mmdevapi/tests: Add tests for IAudioSessionControl2 GetIconPath / SetIconPath.
211 mmdevapi/tests: Add tests for IAudioSessionControl2 GetGroupingParam / SetGroupingParam.
212 mmdevapi: Implement IAudioSessionControl2 GetDisplayName / SetDisplayName.
213 mmdevapi: Implement IAudioSessionControl2 GetIconPath / SetIconPath.
214 mmdevapi: Implement IAudioSessionControl2 GetGroupingParam SetGroupingParam.
216 Giovanni Mascellani (1):
217 d3d11/tests: Add a test for NV12 textures.
220 wmic: Sort the alias list.
221 wmic: Add csproduct and systemenclosure aliases.
222 ntdll: Provide fallback values for DMI fields only readable by root.
223 odbc32: Use a fixed size buffer for parameter bindings.
224 odbc32: Support SQLSetStmtAttr(SQL_ATTR_ROW_ARRAY_SIZE).
225 odbc32: Turn SUCCESS() into a static inline function.
226 odbc32/tests: Add tests for fetching multiple rows at once and parameter binding.
227 winscard: Pass ATR buffer to unixlib in SCardStatusA().
230 mshtml: Use DispatchEx vtbl for document node GetDispID implementation.
231 mshtml: Use DispatchEx for document node InvokeEx implementation.
232 mshtml: Use DISPEX_IDISPATCH_IMPL macro for document object implementation.
233 mshtml: Use DispatchEx for exposing document node IDispatchEx interface.
236 wininet: Unify timeout values closer to hInternet.
239 user32/tests: Print regions in test_swp_paint_regions failure cases.
240 wow64: Implement reading multiple entries in wow64_NtQueryDirectoryObject.
243 dnsapi: Add a stub for DnsServiceBrowse.
246 coremessaging: Add stub DLL.
247 include: Add dispatcherqueue.idl file.
248 coremessaging: Add CreateDispatcherQueueController() stub.
251 scrrun/dictionary: Implement putref_Item() method.
252 dwrite/tests: Fix a test failure on some Win10 machines with CJK locales.
253 gdi32/text: Handle null partial extents pointer in GetTextExtentExPointW().
256 ntdll: Fix test_NtQueryDirectoryFile() on Win11.
257 ntdll: Do not ignore trailing dots in match_filename().
258 ntdll/tests: Test NtQueryDirectoryFile() masks with more files.
259 ntdll: Ignore leading dots in hash_short_file_name().
260 ntdll: Mind all the wildcards in has_wildcard().
261 ntdll: Match wildcard recursively in match_filename().
262 ntdll: Add a special handling for .. in match_filename().
263 ntdll: Implement matching DOS_STAR in NtQueryDirectoryFile().
264 ntdll: Implement matching DOS_DOT in NtQueryDirectoryFile().
265 ntdll: Properly match DOS_QM in match_filename().
266 ntdll: Skip name search for wildcards in asterisk handling in match_filename().
267 kernelbase: Preprocess wildcarded mask and pass it with NtQueryDirectoryFile().
270 wineps.drv: Don't use dynamic buffer when writing new page info.
271 wineps.drv: Write page orientation hint for every page.
272 wineps.drv: Take all pages into account when computing bounding box.
273 wineps.drv: Write PageBoundingBox for every page.
274 wineps.drv: Add partial support for changing page size.
275 msvcp140: Use _get_stream_buffer_pointers() to access FILE internal buffers.
276 ucrtbase: Fix _iobuf struct layout.
277 msvcrt: Don't use custom standard streams definition.
280 widl: Use mangled namespace names in typedef pointer types.
281 win32u: Move the window surface color bits to the common struct.
282 win32u: Pass BITMAPINFO and a HBITMAP to window_surface_init.
283 winex11: Simplify the XSHM extension function calls.
284 winex11: Create XImage before initializing the window surface.
285 winex11: Create a HBITMAP for the allocated surface pixels.
286 win32u: Create a HBITMAP backing the window surface pixels.
287 win32u: Restore surface rect, which may offsetted from the window rect.
288 win32u: Use a dedicated helper to move bits from a previous surface.
289 win32u: Don't map points to the parent window in move_window_bits_parent.
290 win32u: Get rid of move_window_bits_parent, using move_window_bits.
291 winemac: Merge RESET_DEVICE_METRICS and DISPLAYCHANGE internal messages.
292 win32u: Fix a restorer_str typo.
293 win32u: Send display change messages when host display mode changes.
294 win32u: Move desktop resize on WM_DISPLAYCHANGE out of the drivers.
295 gdi32: Use an internal NtUser call for D3DKMTOpenAdapterFromGdiDisplayName.
296 wineandroid: Always clear UpdateLayeredWindow target rectangle.
297 wineandroid: Use the surface bitmap directly in UpdateLayeredWindow.
298 winemac: Always clear UpdateLayeredWindow target rectangle.
299 winemac: Use the surface bitmap directly in UpdateLayeredWindow.
300 winemac: Blend alpha with NtGdiAlphaBlend instead of window opacity.
301 winex11: Always clear UpdateLayeredWindow target rectangle.
302 winex11: Use the surface bitmap directly in UpdateLayeredWindow.
303 win32u: Introduce a new CreateLayeredWindow driver entry.
304 win32u: Move UpdateLayeredWindow implementation out of the drivers.
305 server: Avoid calling set_event from within msg_queue_add_queue.
306 win32u: Introduce new helpers to convert server rectangle_t.
307 win32u: Introduce NtUserAdjustWindowRect call for AdjustWindowRect*.
308 win32u: Pass desired DPI to NtUserGet(Client|Window)Rect.
309 win32u: Introduce a new get_monitor_rect helper.
310 win32u: Pass the rect DPI to NtUserIsWindowRectFullScreen.
311 winex11: Wrap more window surface formats with NtGdiDdDDICreateDCFromMemory.
312 winex11: Fix some incorrect usage of NtGdiDdDDICreateDCFromMemory.
313 gdi.exe16: Fix some incorrect usage of NtGdiDdDDICreateDCFromMemory.
314 winegstreamer: Allow to clear video decoder input/output types.
315 winegstreamer: Enforce default stride value in the video decoder.
316 winegstreamer: Enforce default stride presence in the video processor.
317 winegstreamer: Rename allow_size_change to allow_format_change.
318 winegstreamer: Only report format changes when frontend supports it.
319 winegstreamer: Use a caps to store the desired output format.
320 winegstreamer: Request the new transform output format explicitly.
321 winevulkan: Remove some unnecessary casts.
322 winevulkan: Fix size mismatch when writing to return pointer.
323 include: Add and fix some WGL prototypes.
324 winewayland: Force the DPI context when restoring cursor clipping.
325 winex11: Force the DPI context when restoring cursor clipping.
326 win32u: Use get_monitor_rect in more places.
327 win32u: Parameterize get_clip_cursor dpi.
328 win32u: Parameterize get_monitor_info dpi.
329 win32u: Use window monitor DPI in get_windows_offset when dpi is 0.
330 winex11: Use NtUserMapWindowPoints instead of NtUserScreenToClient.
331 win32u: Call NtUserMapWindowPoints with per-monitor DPI from the drivers.
332 winemac: Force thread DPI awareness when calling NtUserSetWindowPos.
333 winewayland: Force thread DPI awareness when calling NtUserSetWindowPos.
334 winex11: Force thread DPI awareness when calling NtUserSetWindowPos.
335 winex11: Force thread DPI awareness when calling NtUserRedrawWindow.
336 winex11: Force thread DPI awareness when calling NtUserChildWindowFromPointEx.
337 win32u: Remove unused insert_after WindowPosChanging parameter.
338 wineandroid: Remove unnecessary visible_rect initialization.
339 winemac: Remove unnecessary visible_rect initialization.
340 winex11: Remove unnecessary visible_rect initialization.
341 win32u: Split WindowPosChanging driver call to a separate CreateWindowSurface.
342 winex11: Move layered window mapping to X11DRV_UpdateLayeredWindow.
343 winemac: Move layered window mapping to macdrv_UpdateLayeredWindow.
344 win32u: Move WM_WINE_DESKTOP_RESIZED into driver internal messages range.
347 ucrtbase/tests: Add FILE structure tests.
348 ucrtbase: Always use CRITICAL_SECTION for FILE locking.
349 ucrtbase: Fix FILE _flag values.
352 gitlab: Update configuration for the new Mac runner.
355 ws2_32/tests: Test fromlen for recvfrom().
356 ntdll: Don't zero out socket address in sockaddr_from_unix().
359 qasf/tests: Add more tests for dmo_wrapper_sink_Receive.
360 qasf/dmowrapper: Introduce get_output_samples.
361 qasf/dmowrapper: Introduce release_output_samples.
362 qasf/dmowrapper: Return failure in dmo_wrapper_sink_Receive if samples allocating fails.
363 qasf/dmowrapper: Allocate output samples before calling ProcessInput().
364 qasf/dmowrapper: Return VFW_E_WRONG_STATE in dmo_wrapper_sink_Receive.
365 qasf/dmowrapper: Sync Stop() and Receive() for dmo wrapper filter.