From 08bdee58c999e3b64ea90802d10e17abb1f727d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Fri, 17 Mar 2023 19:25:14 +0100 Subject: Revert "core: Avoid setting up frames on fullscreen windows" This caused feedback loops with old statically compiled SDL applications. The bug is fixed in upstream SDL, but that doesn't help when the executables have old SDL's built into them. This reverts commit beeeea546b2145e138a247334d81cfa984da3308. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2678 Part-of: --- src/core/frame.c | 3 --- src/core/window.c | 19 ++++++------------- src/x11/window-x11.c | 2 +- 3 files changed, 7 insertions(+), 17 deletions(-) diff --git a/src/core/frame.c b/src/core/frame.c index c2f0b43b1..9b08d0727 100644 --- a/src/core/frame.c +++ b/src/core/frame.c @@ -45,9 +45,6 @@ meta_window_ensure_frame (MetaWindow *window) MetaX11Display *x11_display = window->display->x11_display; unsigned long data[1] = { 1 }; - if (window->frame) - return; - meta_x11_error_trap_push (x11_display); XChangeProperty (x11_display->xdisplay, diff --git a/src/core/window.c b/src/core/window.c index 1451f0d18..8e11ab7c8 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -851,7 +851,7 @@ client_window_should_be_mapped (MetaWindow *window) #endif if (window->client_type == META_WINDOW_CLIENT_TYPE_X11 && - window->decorated && !window->fullscreen && !window->frame) + window->decorated && !window->frame) return FALSE; return TRUE; @@ -1705,7 +1705,7 @@ meta_window_should_be_showing (MetaWindow *window) #endif if (window->client_type == META_WINDOW_CLIENT_TYPE_X11 && - window->decorated && !window->fullscreen && !window->frame) + window->decorated && !window->frame) return FALSE; /* Windows should be showing if they're located on the @@ -5333,15 +5333,6 @@ meta_window_update_struts (MetaWindow *window) invalidate_work_areas (window); } -static void -sync_needs_frame (MetaWindow *window) -{ - if (window->decorated && !window->fullscreen) - meta_window_ensure_frame (window); - else - meta_window_destroy_frame (window); -} - static void meta_window_type_changed (MetaWindow *window) { @@ -5355,7 +5346,10 @@ meta_window_type_changed (MetaWindow *window) set_net_wm_state (window); /* Update frame */ - sync_needs_frame (window); + if (window->decorated) + meta_window_ensure_frame (window); + else + meta_window_destroy_frame (window); /* update stacking constraints */ meta_window_update_layer (window); @@ -5626,7 +5620,6 @@ meta_window_recalc_features (MetaWindow *window) if (window->has_resize_func != old_has_resize_func) g_object_notify_by_pspec (G_OBJECT (window), obj_props[PROP_RESIZEABLE]); - sync_needs_frame (window); meta_window_frame_size_changed (window); } diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c index a85eb9c37..e87037af8 100644 --- a/src/x11/window-x11.c +++ b/src/x11/window-x11.c @@ -562,7 +562,7 @@ meta_window_x11_manage (MetaWindow *window) if (!window->override_redirect) update_sm_hints (window); /* must come after transient_for */ - if (window->decorated && !window->fullscreen) + if (window->decorated) meta_window_ensure_frame (window); else meta_window_x11_initialize_state (window); -- cgit v1.2.1