From 57c1c49f5c7dd37c99674a69a62ec2486ecfd828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Wed, 7 Apr 2021 08:47:44 +0200 Subject: [PATCH] Fix crash on resume fix regression Resolves: #1946652 --- egl-surface-fixes.patch | 36 ++++++++++++++++++++++-------------- mutter.spec | 5 ++++- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/egl-surface-fixes.patch b/egl-surface-fixes.patch index 8feec66..f993922 100644 --- a/egl-surface-fixes.patch +++ b/egl-surface-fixes.patch @@ -1,12 +1,12 @@ -From 751d94b8f1abc1ec94a8f0bb4a9ec358ac5ad1c5 Mon Sep 17 00:00:00 2001 +From b2cfbe33f75f9929b693372f52c2057b56c7ce65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 25 Mar 2021 15:52:02 +0100 Subject: [PATCH 1/3] onscreen/native: Remove redundant EGLSurface cleanup -It's handled by CoglOnscreenEgl its dispose() implementation. It was +It's handled by CoglOnscreenEgl's dispose() implementation. It was failed to be invoked in the past because the old non-GObject web of vtables were not setup correctly, meaning the old generic EGL layer of -the CoglOnscreen de-init was never inovked. +the CoglOnscreen de-init was never invoked. When the type inheritence was cleaned up, this mistake was not cleaned up, so do that now. @@ -96,10 +96,10 @@ index 53388e3f64..5ca7408114 100644 { MetaEgl *egl = meta_onscreen_native_get_egl (onscreen_native); -- -2.30.2 +2.31.1 -From 0771f48dbc044469785e700421baabbfe7f57d12 Mon Sep 17 00:00:00 2001 +From c61baca30e7fcc67dc52cad2e8d7ffc35e26b45a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 25 Mar 2021 16:22:33 +0100 Subject: [PATCH 2/3] onscreen/native: Release buffer before destroying @@ -115,12 +115,16 @@ gbm_surface. This was not a problem prior to CoglOnscreen turning into a GObject, as in that case, the dispose-chain was not setup correctly, and the EGLSurface destruction was done in the native backend implementation. + +This also changes a g_return_if_fail() to a g_warn_if_fail(), as if we +hit the unexpected case, we still need to call up to the parent dispose +vfunc to not cause critical issues. --- - src/backends/native/meta-onscreen-native.c | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) + src/backends/native/meta-onscreen-native.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c -index 5ca7408114..12fe57c5d5 100644 +index 5ca7408114..e8c4355274 100644 --- a/src/backends/native/meta-onscreen-native.c +++ b/src/backends/native/meta-onscreen-native.c @@ -2050,8 +2050,6 @@ meta_onscreen_native_dispose (GObject *object) @@ -132,8 +136,12 @@ index 5ca7408114..12fe57c5d5 100644 renderer_gpu_data = meta_renderer_native_get_gpu_data (renderer_native, onscreen_native->render_gpu); -@@ -2063,8 +2061,6 @@ meta_onscreen_native_dispose (GObject *object) - g_return_if_fail (onscreen_native->gbm.next_fb == NULL); +@@ -2060,11 +2058,9 @@ meta_onscreen_native_dispose (GObject *object) + case META_RENDERER_NATIVE_MODE_GBM: + /* flip state takes a reference on the onscreen so there should + * never be outstanding flips when we reach here. */ +- g_return_if_fail (onscreen_native->gbm.next_fb == NULL); ++ g_warn_if_fail (onscreen_native->gbm.next_fb == NULL); free_current_bo (onscreen); - @@ -152,10 +160,10 @@ index 5ca7408114..12fe57c5d5 100644 secondary_gpu_state_free); } -- -2.30.2 +2.31.1 -From 4999c771f147e3ef2c95bad45147d801a38dc458 Mon Sep 17 00:00:00 2001 +From 48a58abc23791c81c80e8bd16ebc2462308e7552 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Thu, 25 Mar 2021 18:24:10 +0100 Subject: [PATCH 3/3] onscreen/native: Make sure to reset the EGL context after @@ -183,7 +191,7 @@ for this case. 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/backends/native/meta-onscreen-native.c b/src/backends/native/meta-onscreen-native.c -index 12fe57c5d5..e3d9a184f5 100644 +index e8c4355274..eb49bd45c6 100644 --- a/src/backends/native/meta-onscreen-native.c +++ b/src/backends/native/meta-onscreen-native.c @@ -1071,6 +1071,15 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen, @@ -219,5 +227,5 @@ index 12fe57c5d5..e3d9a184f5 100644 "Onscreen (post pending update)"); kms_crtc = meta_crtc_kms_get_kms_crtc (META_CRTC_KMS (onscreen_native->crtc)); -- -2.30.2 +2.31.1 diff --git a/mutter.spec b/mutter.spec index c48dc53..63869b4 100644 --- a/mutter.spec +++ b/mutter.spec @@ -10,7 +10,7 @@ Name: mutter Version: 40.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Window and compositing manager based on Clutter License: GPLv2+ @@ -175,6 +175,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop %{_datadir}/mutter-%{mutter_api_version}/tests %changelog +* Wed Apr 07 2021 Jonas Ã…dahl - 40.0-5 +- Fix crash on resume fix regression (rhbz#1946652) + * Tue Mar 30 2021 Kalev Lember - 40.0-4 - Fix enter, space, backspace keys not working with input methods (#1942294) - Drop old obsoletes and conflicts