summaryrefslogtreecommitdiff
path: root/src/wayland
Commit message (Collapse)AuthorAgeFilesLines
* mutter: Cleanup gi-docgen annotationsbilelmoussaoui/mutter-docsBilal Elmoussaoui2023-05-174-12/+12
|
* display: Drop the indirection when initializating XwaylandBilal Elmoussaoui2023-05-152-12/+0
| | | | | | | The init function didn't do much other then calling into the xwayland one Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2445>
* wayland: Move surface check to MetaWaylandSurfaceBilal Elmoussaoui2023-05-157-25/+21
| | | | | | | Allows dropping various HAVE_XWAYLAND ifdef as the function would always return false if Mutter is built without XWayland Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2445>
* wayland: Guard XWayland typesBilal Elmoussaoui2023-05-154-0/+12
| | | | Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2445>
* wayland/surface: NULL check surface resource in handle_output_bound()Jonas Ådahl2023-05-091-0/+3
| | | | | | | | | | | | | | | | | | | | | Otherwise binding new wl_output's might try to send enter to the destroyed resource. Fixes the following crash: #0 wl_resource_get_client at ../src/wayland-server.c:801 #1 handle_output_bound at ../src/wayland/meta-wayland-surface.c:1287 #3 signal_emit_unlocked_R.isra.0 at ../gobject/gsignal.c:3812 #6 ffi_call_unix64 at ../src/x86/unix64.S:104 #7 ffi_call_int at ../src/x86/ffi64.c:673 #8 ffi_call at ../src/x86/ffi64.c:710 #9 wl_closure_invoke at ../src/connection.c:1025 #10 wl_client_connection_data at ../src/wayland-server.c:438 #11 wl_event_loop_dispatch at ../src/event-loop.c:1027 #12 wayland_event_source_dispatch at ../src/wayland/meta-wayland.c:125 #15 g_main_context_iterate.isra.0 at ../glib/gmain.c:4276 #17 meta_context_run_main_loop at ../src/core/meta-context.c:482 Related: https://bugzilla.redhat.com/show_bug.cgi?id=2196527 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2992>
* wayland/dma-buf: Enable modifiers by default on non-native backendRobert Mader2023-04-201-1/+14
| | | | | | | | | | | | | If the used EGL backend supports it. In practice this should currently only affect the nested backend. Enabling modifiers can help with app development. An example is `weston-simple-dmabuf-v4l`, which requires the linear modifier to be available. Note that Weston behaves similar already. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2972>
* xdg-shell: Always handle frame callbacks in popup_apply_state()Robert Mader2023-04-201-1/+4
| | | | | | | | Just like we do in `toplevel_apply_state()`. Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/2752 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2963>
* wayland/xdg-shell: Bail from popup_configure if resource was destroyedMichel Dänzer2023-04-181-0/+3
| | | | | | | | | | | | | This function gets called when a surface state transaction is applied. Applying a transaction can get delayed, so the Wayland resource may have already been destroyed when we get here. In that case we cannot send events, so there's nothing to do. v2: * Drop code comment, expand commit log instead. (Jonas Ådahl) Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2737 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2967>
* wayland/cursor-surface: Update cursor on disposeJonas Ådahl2023-04-172-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise we'll have a cursor sprite backed by a surface that no longer exist. This usually doesn't happen, but can happen in rare situations related to pointer capability changes Wayland client cursor changes and hotplugs. Fixes the following crash: #0 meta_wayland_buffer_get_resource() at ../src/wayland/meta-wayland-buffer.c:128 #1 realize_cursor_sprite_from_wl_buffer_for_gpu() at ../src/backends/native/meta-cursor-renderer-native.c:1649 #2 realize_cursor_sprite_for_gpu() at ../src/backends/native/meta-cursor-renderer-native.c:1869 #3 realize_cursor_sprite() at ../src/backends/native/meta-cursor-renderer-native.c:1887 #4 meta_cursor_renderer_native_update_cursor() at ../src/backends/native/meta-cursor-renderer-native.c:1100 #5 meta_cursor_renderer_update_cursor() at ../src/backends/meta-cursor-renderer.c:414 #6 meta_cursor_renderer_force_update() at ../src/backends/meta-cursor-renderer.c:449 #7 update_cursors() at ../src/backends/meta-backend.c:328 #8 meta_backend_monitors_changed() at ../src/backends/meta-backend.c:338 #9 meta_monitor_manager_notify_monitors_changed() at ../src/backends/meta-monitor-manager.c:3590 #10 meta_monitor_manager_rebuild() at ../src/backends/meta-monitor-manager.c:3678 #11 meta_monitor_manager_native_apply_monitors_config() at ../src/backends/native/meta-monitor-manager-native.c:343 #12 meta_monitor_manager_apply_monitors_config() at ../src/backends/meta-monitor-manager.c:706 #13 meta_monitor_manager_ensure_configured() at ../src/backends/meta-monitor-manager.c:779 #14 meta_monitor_manager_reconfigure() at ../src/backends/meta-monitor-manager.c:3738 #15 meta_monitor_manager_reload() at ../src/backends/meta-monitor-manager.c:3745 or the following on gnome-43: #0 meta_wayland_surface_get_buffer at ../src/wayland/meta-wayland-surface.c:441 #1 meta_cursor_sprite_wayland_get_buffer at ../src/wayland/meta-cursor-sprite-wayland.c:83 #2 realize_cursor_sprite_from_wl_buffer_for_gpu at ../src/backends/native/meta-cursor-renderer-native.c:1612 #3 realize_cursor_sprite_for_gpu at ../src/backends/native/meta-cursor-renderer-native.c:1836 #4 realize_cursor_sprite at ../src/backends/native/meta-cursor-renderer-native.c:1854 #5 meta_cursor_renderer_native_update_cursor at ../src/backends/native/meta-cursor-renderer-native.c:1087 #6 meta_cursor_renderer_update_cursor at ../src/backends/meta-cursor-renderer.c:413 #7 meta_cursor_renderer_force_update at ../src/backends/meta-cursor-renderer.c:448 #8 update_cursors at ../src/backends/meta-backend.c:344 #9 meta_backend_monitors_changed at ../src/backends/meta-backend.c:354 Related: https://bugzilla.redhat.com/show_bug.cgi?id=2185113 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2968>
* wayland: Emit frame events in GSource after "empty" updatesRobert Mader2023-04-171-38/+208
| | | | | | | | | | | | | | | | | | | | | | | | | Under certain conditions a stage-view update does not trigger a kms update. In such cases we still want the next update to run within the same refresh cycle, as otherwise we'd waste the remaining time in the current one. At the same time we currently use the `after-update` signal for Wayland frame events, which again may result in more "empty" updates - creating an unthrottled feedback loop. This can trigger excessive load both in the compositor as well as in clients. Introduce a new GSource that is dispatched once per refresh cycle at maximum per stage view and use it to emit frame events. Do so by computing the time from when on we can be sure that an update resulting from a client commit would certainly get scheduled to the next refresh cycle. Note: this only works on the native backend. Given that chances are small that we hit the corresponding issue on e.g. the nested backend, stick to the previous behavior there for now. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2823>
* wayland: Set compositor when creating MetaWaylandDataSourceXWaylandSebastian Keller2023-04-152-9/+77
| | | | | | | | | | | | | create_and_send_dnd_offer() sets the compositor of the offer to the one from the MetaWaylandDataSource. This then later gets used in display_from_offer() when trying to get the context from the compositor. meta_wayland_data_source_xwayland_new() however was not setting the compositor, so this was causing crashes when dragging things from X11 windows on Wayland. Fixes: 2731f0cda ("wayland: Setup and use ownership chains") Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2723 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2956>
* wayland/data-device: Clear data source when cancelling drag with ESCmsizanoen12023-04-151-1/+3
| | | | | | | This ensures a consistent code path with other cases where the drag operation might be cancelled. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2953>
* wayland: Don't leak XDnD mime type stringsSebastian Keller2023-04-141-2/+4
| | | | | | | | After this got changed from gdk_x11_get_xatom_name() to XGetAtomName(), this no longer returns a const char* and it now also needs to be freed. Fixes: 014cde646 ("wayland: Do not use GDK functions on XDnD implementation") Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2957>
* xdg-shell: Early out of apply if dismissedJonas Ådahl2023-04-131-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | We might end up trying to apply a pending state late if it was delayed by DMA buffers not being ready. Trying to discard the pending state from the transaction when dismissing is hard, because we might be applying a chain of transactions that would disqualify subsequent transactions if a former one dismisses the popup, so lets just drop what the apply would otherwise do, if we're not going to use it anyway. This fixes the following crash: 0) meta_wayland_surface_get_window (surface=0x0) 1) meta_wayland_xdg_popup_apply_state (surface_role=0xf5ee80, pending=0xf662a0) 2) meta_wayland_surface_role_apply_state (surface_role=0xf5ee80, pending=0xf662a0) 3) meta_wayland_surface_apply_state (surface=0xf5e640, state=0xf662a0) 4) meta_wayland_transaction_apply (transaction=0xf56170, first_candidate=0x7fffffffcee8) 5) meta_wayland_transaction_maybe_apply_one (transaction=0xf56170, first_candidate=0x7fffffffcee8) 6) meta_wayland_transaction_maybe_apply (transaction=0xf56170) 7) meta_wayland_transaction_dma_buf_dispatch (buffer=0xf448a0, user_data=0xf56200) 8) meta_wayland_dma_buf_source_dispatch (base=0xf5f140, callback=0x0, user_data=0x0) 9) g_main_dispatch (context=0x41baa0) Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2940>
* wayland/xdg-shell: Dismiss instead of destroy invalid popupJonas Ådahl2023-04-131-1/+1
| | | | | | | | | Destroying is insufficient as it doesn't end any popup pointer grab, if the dismissed popup was the last. This would later hit an assert as the popup grab is assumed to always have at least one popup in its chain. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2728 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2940>
* wayland/xdg-shell: Ignore reposition if popup was dismissedJonas Ådahl2023-04-131-0/+3
| | | | | | | | | If the popup was dismissed (i.e. has no MetaWindow anymore), it'll also have no parent surface. With no parent surface, we'd try to fetch a transaction from NULL and crash, but if we don't try if we were dismissed, we won't reach here anyway. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2940>
* wayland/buffer: Avoid spamming the log when a buffer is not scanoutableDaniel van Vugt2023-03-201-4/+3
| | | | | | | | | | It's not really an error and we recover seamlessly. If someone really wants to check if/why direct scanout is failing then they can still use `env MUTTER_DEBUG=render,kms`. Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2702 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2918>
* wayland/surface: Export get_buffer_[width|height] to testsRobert Mader2023-03-042-44/+55
| | | | | | It will be used in fractional scale tests. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2394>
* wayland: Implement fractional_scale_v1 protocolRobert Mader2023-03-045-0/+240
| | | | | | | | | | Giving clients hints about optimal fractional scaling ratios, to be used together with the `wp_viewport` protocol. See https://gitlab.freedesktop.org/wayland/wayland-protocols/-/blob/1.31/staging/fractional-scale/fractional-scale-v1.xml Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2394>
* wayland/surface: Fix can_scanout_untransformed() for transform+viewportRobert Mader2023-03-041-7/+23
| | | | | | | | | The buffer needs to match the untransformed layout size. While on it simplify the check from floats to ints where possible - and improve logging a bit. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2394>
* wayland: Take surface reference for presentation-time feedbackMichel Dänzer2023-03-031-1/+2
| | | | | | | | | | | | Without this, the feedback->surface pointer could outlive the surface it pointed to, which could result in use-after-free. One consequence of this is that if a MetaWaylandPresentationFeedback object ever lingers on longer than expected, it would keep the MetaWaylandSurface alive as well. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2585 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2886>
* Remove support for window shadingRobert Mader2023-03-031-4/+1
| | | | | | | | | It's been broken for an unknown time and was never supported on Wayland. Thus let's remove the leftovers. Helpful command: `rg 'shade(?!r)' --pcre2` Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2884>
* onscreen/native: Handle unexpected scanout failures asyncJonas Ådahl2023-03-012-9/+65
| | | | | | | | | | | | | | | | | | | | | | | We test direct client buffer scanout using a TEST_ONLY commit on atomic, and with various conditions in non-atomic, but if we end up failing to actually commit despite this, handle the fallout asynchronously. What this means is that we'll reschedule a new frame immediately. For this to work, the same scanout buffer needs to be avoided for the same CRTC. This is done by using the newly added signal on the CoglScanout object to let the MetaWaylandBuffer object mark the current buffer as non-working for the onsrceen that it failed on. This allows to re-try buffers on the same onscreen when new ones are attached. This queues a full damage, since we consumed the qeued redraw rect. The redraw rect wasn't lost - it was accumulated to make sure the whole primary plane was redrawed according to the damage region, whenever we would end up no longer doing direct scanout, but this accumulation only works when we're not intentionally stopping to scanout. For now, lets just damage the whole view, it's just an graceful fallback in response to an unexpected error anyway. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2854>
* window-wayland: Remove unused APIJonas Dreßler2023-03-012-24/+0
| | | | Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2873>
* wayland/actor-surface: Always schedule stage updates on frame callbacksRobert Mader2023-02-281-11/+6
| | | | | | | | | | | | There is an increasing number of cases where we want the frame callback logic to run for a stage-view and the complexity needed to avoid these, combined with the likelyhood of bugs, arguably does not justify the benefit any more. Thus unconditionally schedule updates for all stage-views when frame callbacks are requested. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2789>
* wayland/pointer: Check for surface resourceRobert Mader2023-02-251-1/+1
| | | | | | | | | Like we do in several other places since https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1880 Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/2645 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2869>
* window/xwayland: Relayout when fullscreen client update emulated RandR modemsizanoen12023-02-201-0/+15
| | | | | | | | This fixes an issue when GLFW tries to change the display resolution while fullscreen where the application window size doesn't get updated according to the emulated resolution. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2725>
* wayland: Don't overwrite surface offsetsMatthias Clasen2023-02-141-8/+13
| | | | | | | | | | | | | The intention when the offset request was added to protocol was that the attach request in a new enough protocol version should require dx/dy to be zero, but ignore them otherwise. The current code checks for 0, but then overwrites the existing dx/dy with it, which renders an earlier wl_surface_offset() call ineffective. Fixes: #2622 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2843>
* wayland: Add X11 interop service client protocolJonas Ådahl2023-02-135-0/+182
| | | | | | | | | This protocol is intended to let special clients create transient-for relationships between X11 and Wayland windows. The client that needs this is xdg-desktop-portal-gnome, which will create e.g. file chooser Wayland dialogs that should be mapped on top of X11 windows. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland: Don't set X11 envvars when we don't support X11Jonas Ådahl2023-02-131-8/+6
| | | | Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland/surface: Add getter for MetaWaylandCompositorJonas Ådahl2023-02-132-0/+8
| | | | Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* Introduce the 'service channel' D-Bus serviceJonas Ådahl2023-02-133-0/+25
| | | | | | | | | | | | | | | | | | | | | | The service channel D-Bus interface aims to be a "back door" for services that needs special casing in Mutter, e.g. have custom private protocols only meant to be used by that particular service. There are currently no special casing implemented; only the basic service channel infrastructure is added. There is a single method on the interface, that is meant to eventually be used by xdg-desktop-portal-gnome to open a Wayland connection with a private protocol needed for the portal backend's rather special window management needs. The service channel Wayland client works by allowing one instance of each "type", where each time needs to be defined to work in parallel. If a new service client connects, the old one will be disconnected. MetaWaylandClient's are used to manage the service clients, and are assigned the service client type. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland/surface: Add getter for the surface wl_resourceJonas Ådahl2023-02-132-0/+9
| | | | | | Meant to avoid dereferencing the MetaWaylandSurface struct directly. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland: Add wl_global filter managerJonas Ådahl2023-02-137-30/+219
| | | | | | | | | | | | | | One can add a wl_global filter to a wl_display instance, which can be used to decide what clients should see what globals. This has so far been used to limit a Xwayland specific protocol extension to only Xwayland. In order to expand the logic about what globals are filtered to what clients, introduce a filter manager and port the Xwayland specific protocol filter to this new manager. Tests are added, using a new dummy protocol, to ensure that filtering is working as expected. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland/compositor: Add API to get wl_displayJonas Ådahl2023-02-132-0/+7
| | | | Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland/client: Add API to check if it matches a wl_clientJonas Ådahl2023-02-132-0/+16
| | | | Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland/client: Add way to create indirectly launched clientsJonas Ådahl2023-02-132-1/+97
| | | | | | | | | This API creates a "client" then later sets up a wl_client and returns a file descriptor some Wayland client can connect to. It's meant to be used as a method other than WAYLAND_SOCKET and process launching, e.g. passing a file descriptor via a D-Bus API. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland/client: Put subprocess specific fields in anon structJonas Ådahl2023-02-131-27/+33
| | | | | | | | There will be two kind of client instances, lets move fields that are only relevant to the current way of operation in an anonymous struct to keep things a bit separate. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland/client: Put wl_client creator in helperJonas Ådahl2023-02-131-13/+28
| | | | | | | Will be used to create clients in other way than a subprocess launcher and WAYLAND_SOCKET environment variable. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland/client: Keep track of wl_client alivenessJonas Ådahl2023-02-131-1/+42
| | | | | | | Clear the wl_client pointer if the client is destroyed, and emit new signal if it happened. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
* wayland: Do not use GDK functions on XDnD implementationCarlos Garnacho2023-02-101-13/+12
| | | | | | | | | We used it to retrieve a Display, and convert between Atoms and strings. We can just use the MetaX11Display's Display (It's the same than GDK's anyways) and use XInternAtom/XGetAtomName for these conversions. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2836>
* wayland/xdg-foreign: Fix race condition crashJonas Ådahl2023-02-102-13/+18
| | | | | | | | | We didn't always set an implementation, when the foreign toplevel wasn't found, and when the importer tried to set the parent-child relationship, the implementation was missing and we'd crash in wl_closure_invoke() in libwayland-server. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2834>
* wayland: Trigger full focus sync after keyboard focus surface is destroyedCarlos Garnacho2023-02-091-3/+8
| | | | | | | | | | | | | This used to be implicitly done by popups using a META_GRAB_OP_WAYLAND_POPUP MetaDisplay grab. Since commit a8cd488c6f4e Wayland popups no longer do that, so the keyboard focus was simply unset if a popup was destroyed while having the keyboard focus. Trigger a full input focus sync, so the correct MetaWaylandKeyboard focus surface is looked up from the focused MetaWindow. Fixes: a8cd488c6f4e - wayland: Drop redundant MetaDisplay grab op Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2833>
* wayland: Avoid entering MetaWindow on other than user pointer motionsCarlos Garnacho2023-02-091-13/+27
| | | | | | | | | | | | | | On one hand, this used to be handled generically in all the paths that changed the MetaWaylandPointer focus surface, induced by user interaction or not. On the other hand, just listening for crossing events is not sufficient since those also do happen programmatically. We must only listen to crossing events that have a physical source device, meaning this was created through user interaction. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/888 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2828>
* wayland/outputs: Fix potential crash when output has no monitorKeyu Tao2023-02-061-1/+6
| | | | | | | | | | | | | | | bind_output() creates output interface resource, but does not set implementation for it when wayland_output->monitor is NULL. However, when the wayland library is running wl_closure_invoke(), it expects the implementation to be non-NULL, and if not, it just segfaults mutter by NULL pointer dereference. This commit tries to address this issue by setting an implementation when wayland_output->monitor is NULL. This could help prevent crash when resuming from suspend or hotplugging displays. Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2570 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2827>
* wayland/surface: Reenable WL_SURFACE_ERROR_INVALID_SIZE checkRobert Mader2023-02-011-8/+19
| | | | | | | | This partly reverts f9857cb8 but leaves an exception for cursor surfaces in place, as some apps/toolkits will likely not get updated anytime soon to ensure cursor themes comply with the Wayland spec. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2815>
* wayland: Check that the current backend is native before using DMA-BUF FDsCarlos Garnacho2023-01-311-1/+5
| | | | | | | | We may fall through these paths on --nested too, resulting in us poking the wrong internals from the wrong MetaRenderer subclass. Fixes launching of clients using wl_drm in --nested. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2818>
* Use g_clear_fd() instead of open coding the same behaviorJonas Ådahl2023-01-302-9/+4
| | | | Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2806>
* core: Pass device/sequence on meta_window_begin_grab_op()Carlos Garnacho2023-01-303-14/+25
| | | | | | | | This is a public API change. Add device/sequence parameters to this operation, so that window dragging and resizing can stick to one set of pointing events of them all. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2683>
* wayland: Add device/sequence out parameters getting wayland grab infoCarlos Garnacho2023-01-305-17/+41
| | | | | | This information will become necessary for window move/resize ops. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2683>