Fix crash on resume fix regression

Resolves: #1946652
This commit is contained in:
Jonas Ådahl 2021-04-07 08:47:44 +02:00
parent 7d544e4b37
commit 57c1c49f5c
2 changed files with 26 additions and 15 deletions

View File

@ -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?= <jadahl@gmail.com> From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Thu, 25 Mar 2021 15:52:02 +0100 Date: Thu, 25 Mar 2021 15:52:02 +0100
Subject: [PATCH 1/3] onscreen/native: Remove redundant EGLSurface cleanup 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 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 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 When the type inheritence was cleaned up, this mistake was not cleaned
up, so do that now. up, so do that now.
@ -96,10 +96,10 @@ index 53388e3f64..5ca7408114 100644
{ {
MetaEgl *egl = meta_onscreen_native_get_egl (onscreen_native); 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?= <jadahl@gmail.com> From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Thu, 25 Mar 2021 16:22:33 +0100 Date: Thu, 25 Mar 2021 16:22:33 +0100
Subject: [PATCH 2/3] onscreen/native: Release buffer before destroying 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 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 in that case, the dispose-chain was not setup correctly, and the
EGLSurface destruction was done in the native backend implementation. 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 +++---- src/backends/native/meta-onscreen-native.c | 9 ++++-----
1 file changed, 3 insertions(+), 4 deletions(-) 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 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 --- a/src/backends/native/meta-onscreen-native.c
+++ b/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) @@ -2050,8 +2050,6 @@ meta_onscreen_native_dispose (GObject *object)
@ -132,8 +136,12 @@ index 5ca7408114..12fe57c5d5 100644
renderer_gpu_data = renderer_gpu_data =
meta_renderer_native_get_gpu_data (renderer_native, meta_renderer_native_get_gpu_data (renderer_native,
onscreen_native->render_gpu); onscreen_native->render_gpu);
@@ -2063,8 +2061,6 @@ meta_onscreen_native_dispose (GObject *object) @@ -2060,11 +2058,9 @@ meta_onscreen_native_dispose (GObject *object)
g_return_if_fail (onscreen_native->gbm.next_fb == NULL); 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); free_current_bo (onscreen);
- -
@ -152,10 +160,10 @@ index 5ca7408114..12fe57c5d5 100644
secondary_gpu_state_free); 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?= <jadahl@gmail.com> From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
Date: Thu, 25 Mar 2021 18:24:10 +0100 Date: Thu, 25 Mar 2021 18:24:10 +0100
Subject: [PATCH 3/3] onscreen/native: Make sure to reset the EGL context after 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(-) 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 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 --- a/src/backends/native/meta-onscreen-native.c
+++ b/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, @@ -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)"); "Onscreen (post pending update)");
kms_crtc = meta_crtc_kms_get_kms_crtc (META_CRTC_KMS (onscreen_native->crtc)); kms_crtc = meta_crtc_kms_get_kms_crtc (META_CRTC_KMS (onscreen_native->crtc));
-- --
2.30.2 2.31.1

View File

@ -10,7 +10,7 @@
Name: mutter Name: mutter
Version: 40.0 Version: 40.0
Release: 4%{?dist} Release: 5%{?dist}
Summary: Window and compositing manager based on Clutter Summary: Window and compositing manager based on Clutter
License: GPLv2+ License: GPLv2+
@ -175,6 +175,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop
%{_datadir}/mutter-%{mutter_api_version}/tests %{_datadir}/mutter-%{mutter_api_version}/tests
%changelog %changelog
* Wed Apr 07 2021 Jonas Ådahl <jadahl@redhat.com> - 40.0-5
- Fix crash on resume fix regression (rhbz#1946652)
* Tue Mar 30 2021 Kalev Lember <klember@redhat.com> - 40.0-4 * Tue Mar 30 2021 Kalev Lember <klember@redhat.com> - 40.0-4
- Fix enter, space, backspace keys not working with input methods (#1942294) - Fix enter, space, backspace keys not working with input methods (#1942294)
- Drop old obsoletes and conflicts - Drop old obsoletes and conflicts