Instead of https://gitlab.winehq.org/wine/wine/-/merge_requests/7815, for https://gitlab.winehq.org/wine/wine/-/merge_requests/7226, this only split the sync ops to a separate vtable and let objects delegate theirs to a separate object.
This starts using a event-like interface for most objects, leaving the decision regarding if/how to split sync themselves / integrate inproc syncs for later.
--
v5: server: Use an event sync for fd objects.
server: Introduce a new event sync object.
server: Redirect fd-based objects sync to the fd.
server: Add an operation to retrieve an object sync.
server: Move object grab/release out of (add|remove)_queue.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7848
This MR uses the cursor-shapes-v1 protocol to tell the compositor which system
cursor shape to use. If a shape match is not found (or cursor-shapes-v1
is not available) we fall back to setting the cursor buffer from the
Windows cursor data as before.
The second commit implements support for a "UseSystemCursors" driver option, similar
to what winex11 has. Since this is the first winewayland driver option we also introduce
all the related registry reading code.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=57648
--
Side note: The registry code is a copy from winex11, and is the third copy in the
codebase (x11, mac, wayland). Perhaps it's worth introducing a common
ntuser function to perform the option reading for the drivers, something like
`NtUserGetDriverOption("X11 Driver", buffer, buffer_size, TRUE /* whether to read app specific option if present */)`.
With such a function there is the concern about each call reopening the registry, but we can see if that's actually a problem and how a different API (or some sort of caching) may help.
--
v4: winewayland: Support "UseSystemCursors" driver option.
winewayland: Use system cursor shapes when possible.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7678
For https://gitlab.winehq.org/wine/wine/-/merge_requests/7512 to use it to locate window shared objects.
--
v17: win32u: Use the session shared object for user handle entries.
win32u: Use the session shared object to implement is_window.
server: Move the user object handle table to the shared memory.
server: Allocate a session shared memory header structure.
server: Use NTUSER_OBJ constants for user object types.
server: Remove const qualifier from shared memory pointers.
include: Implement ReadAcquire64.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7610
Ensures that OpenGL content is correctly sized when DPI scaling is active (either because of a non-DPI-aware app, or display mode emulation).
Tested on M2 Pro/macOS Sequoia with a variety of games (through wined3d and with display mode emulation enabled).
Changing the OpenGL back buffer size was previously only done when the winemac `RetinaMode` was enabled in the registry, now it's always being set. It's possible this could cause problems with other GPUs/drivers.
Also, `sync_context_rect` checks whether `draw_rect_win_dpi` has changed on every call (unlike `draw_rect` which is only checked after `WindowPosChanged` sets the `view_moved` flag). This follows winex11, which checks the DPI-scaled size in every `wglSwapBuffers` call.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7979
--
v2: mshtml/tests: Test iframe window navigation resetting props.
mshtml: Get rid of useless "iter" member in the attribute collection enum.
mshtml: Expose "arguments" and "caller" from host constructors in IE9+ modes.
mshtml: Expose "caller" from host functions in IE9+ modes.
mshtml: Expose "arguments" from host functions in IE9+ modes.
jscript: Properly fill the builtin props.
mshtml: Don't redefine deleted props in dispex_define_property.
mshtml: Ignore setting non-writable external props.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7970