From be46852292f0a10f490d2bcbef7c79922758e6db Mon Sep 17 00:00:00 2001 From: Sebastian Wick Date: Tue, 25 Jun 2024 16:15:32 +0200 Subject: [PATCH] wayland/dnd-surface: Chain up in the assigned vfunc Commit e775052429 changed the code such that resetting the actor is done when a surface role is assigned. The dnd surface assigned vfunc doesn't chain up which means the code to reset the actor is never hit and the dnd surface never shows up. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3540 Fixes: e775052429 ("wayland/actor-surface: Reset the actor on role-assignment") --- src/wayland/meta-wayland-dnd-surface.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/wayland/meta-wayland-dnd-surface.c b/src/wayland/meta-wayland-dnd-surface.c index 5c0495926..4d5a0283a 100644 --- a/src/wayland/meta-wayland-dnd-surface.c +++ b/src/wayland/meta-wayland-dnd-surface.c @@ -97,12 +97,16 @@ dnd_surface_assigned (MetaWaylandSurfaceRole *surface_role) { MetaWaylandSurface *surface = meta_wayland_surface_role_get_surface (surface_role); + MetaWaylandSurfaceRoleClass *surface_role_class = + META_WAYLAND_SURFACE_ROLE_CLASS (meta_wayland_surface_role_dnd_parent_class); - if (wl_list_empty (&surface->unassigned.pending_frame_callback_list)) - return; + if (!wl_list_empty (&surface->unassigned.pending_frame_callback_list)) + { + meta_wayland_compositor_add_frame_callback_surface (surface->compositor, + surface); + } - meta_wayland_compositor_add_frame_callback_surface (surface->compositor, - surface); + surface_role_class->assigned (surface_role); } static void