At the moment GL/VK content can only be presented in top-level windows, since child windows are not backed by Wayland surfaces. This MR adds support for such scenarios, in a few gradual steps:
1. Create Wayland (sub)surfaces for all child windows, anchoring them to their parent surface, which may also be a child window surface (i.e., we support GL/VK in nested child windows). This approach works, but it pollutes the compositor with mostly unused, and possibly nested (sub)surfaces. We will deal with this later in the MR.
2. Ensure that the child window (sub)surfaces are properly updated and reconfigured, and support WS_POPUP <-> WS_CHILD style changes (reparenting etc).
3. In the last commit, improve efficiency by creating (sub)surfaces only for the child windows needed by GL/VK, and anchor them directly to the parent toplevel. This removes (sub)surface bloat and unnecessary nesting, the trade-off being some extra complexity when dealing with updates.
Note that this MR doesn't clip GL/VK child window contents at the moment.
The subsurface mechanism introduced in this MR could also handle other kinds of windows in the future, for example display and properly position transient windows, menus etc.
--
v2: winewayland: Improve integration of GDI rendering with accelerated content.
winewayland: Create Wayland surfaces for child windows on demand.
winewayland: Ensure parent surface contents for accelerated windows.
winewayland: Support Wayland surface role changes.
winewayland: Use weak references for parent wayland_surfaces.
winewayland: Handle subsurface reconfiguration.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6107
--
v2: qcap: Delay setting v4l device format until stream start.
quartz: Propagate graph start error in MediaControl_Run().
qcap/tests: Add a test for simultaneous video capture usage.
qcap/tests: Fix test failure in testsink_Receive() on some hardware.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6022
--
v2: widl: Propagate attrs to inner pointer types.
widl: Ignore strings in is_embedded_complex().
widl: Get rid of the write_embedded_types() helper.
widl: Explicitly check for top-level parameters before adding FC_ALLOCED_ON_STACK.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6165
In win32u/font.c's `create_child_font_list` function:
- We remove the `ansi_cp` `MaximumCharacterSize` check since this is the current locale's codepage, not the font's codepage. This was preventing certain child fonts from being loaded when they should have been.
- We include Microsoft Sans Serif as a child font, whereas previously we were only including its linked fonts as child font.
- As a backup, we also add Tahoma (which should ship with Wine) and its linked fonts as child fonts in case Microsoft Sans Serif is not available.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6046
Adds the tray icons implementation based on org.kde.StatusNotifierItem interface usage. Does allow restarting StatusNotifierWatcher object, but will fallback to XEMBED or internal tray, if wine gets initialized when there is no StatusNotifierWatcher object registered.
--
v41: win32u: Handle dbus notification balloons from system_tray_call
win32u: Handle notification balloons through org.freedesktop.Notifications dbus interface
win32u: Add a ShowBalloon driver interface
win32u: Handle StatusNotifierItem management from system_tray_call
win32u: Handle StatusNotifierWatcher owner changing and registering objects to a new watcher
win32u: Add SNI driver for systray handling
win32u: Add DBus event loop for SNI handling
win32u: Add a SystrayRunLoop driver interface
https://gitlab.winehq.org/wine/wine/-/merge_requests/2808