diff -Nru gnome-shell-45.0/debian/changelog gnome-shell-45.0/debian/changelog --- gnome-shell-45.0/debian/changelog 2023-09-18 15:22:07.000000000 +0000 +++ gnome-shell-45.0/debian/changelog 2023-10-03 18:16:54.000000000 +0000 @@ -1,3 +1,11 @@ +gnome-shell (45.0-1ubuntu2) mantic; urgency=medium + + * Cherry-pick 2 commits from future 45.1: + - Fix crash at shutdown (LP: #2036889) + - Fix indefinite inhibition of direct scanout when closing the Overview + + -- Jeremy BĂ­cha Tue, 03 Oct 2023 14:16:54 -0400 + gnome-shell (45.0-1ubuntu1) mantic; urgency=medium * Merge with Debian. Remaining changes: diff -Nru gnome-shell-45.0/debian/gbp.conf gnome-shell-45.0/debian/gbp.conf --- gnome-shell-45.0/debian/gbp.conf 2023-09-18 15:22:07.000000000 +0000 +++ gnome-shell-45.0/debian/gbp.conf 2023-10-03 18:16:54.000000000 +0000 @@ -1,6 +1,6 @@ [DEFAULT] pristine-tar = True -debian-branch=ubuntu/latest +debian-branch = ubuntu/mantic debian-tag=ubuntu/%(version)s upstream-branch = upstream/latest diff -Nru gnome-shell-45.0/debian/patches/layout-Destroy-panel-barrier-on-shutdown.patch gnome-shell-45.0/debian/patches/layout-Destroy-panel-barrier-on-shutdown.patch --- gnome-shell-45.0/debian/patches/layout-Destroy-panel-barrier-on-shutdown.patch 1970-01-01 00:00:00.000000000 +0000 +++ gnome-shell-45.0/debian/patches/layout-Destroy-panel-barrier-on-shutdown.patch 2023-10-03 18:16:54.000000000 +0000 @@ -0,0 +1,44 @@ +From: Daniel van Vugt +Date: Tue, 3 Oct 2023 15:00:45 +0800 +Subject: layout: Destroy panel barrier on shutdown + +It was being leaked, which is detected on mutter shutdown. + +Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3011 +Part-of: +(cherry picked from commit 4e2dddd18ef27da768f8b0fc2c8e243a3b207f21) + +Origin: upstream, after 45.0 +--- + js/ui/layout.js | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/js/ui/layout.js b/js/ui/layout.js +index 06ed440..95e34f2 100644 +--- a/js/ui/layout.js ++++ b/js/ui/layout.js +@@ -243,6 +243,7 @@ export const LayoutManager = GObject.registerClass({ + } + + this._destroyHotCorners(); ++ this._destroyPanelBarrier(); + this.uiGroup.destroy(); + }); + +@@ -575,11 +576,15 @@ export const LayoutManager = GObject.registerClass({ + }); + } + +- _updatePanelBarrier() { ++ _destroyPanelBarrier() { + if (this._rightPanelBarrier) { + this._rightPanelBarrier.destroy(); + this._rightPanelBarrier = null; + } ++ } ++ ++ _updatePanelBarrier() { ++ this._destroyPanelBarrier(); + + if (!this.primaryMonitor) + return; diff -Nru gnome-shell-45.0/debian/patches/overview-Handle-unredirection-in-OverviewShown-state-mach.patch gnome-shell-45.0/debian/patches/overview-Handle-unredirection-in-OverviewShown-state-mach.patch --- gnome-shell-45.0/debian/patches/overview-Handle-unredirection-in-OverviewShown-state-mach.patch 1970-01-01 00:00:00.000000000 +0000 +++ gnome-shell-45.0/debian/patches/overview-Handle-unredirection-in-OverviewShown-state-mach.patch 2023-10-03 18:16:54.000000000 +0000 @@ -0,0 +1,74 @@ +From: "robert.mader@collabora.com" +Date: Wed, 27 Sep 2023 01:10:45 +0200 +Subject: overview: Handle unredirection in OverviewShown state machine + +Under certain unknown circumstances currently not every +`disable_unredirect_for_display()` gets matched with an +`enable_unredirect_for_display()` when closing the overview. + +As we only want to not disable unredirection when hidden and we nowadays +have a state machine that ensures we transition to and from one state to +another only once, handle unredirection en-/disablement as part of the +state transition. + +Part-of: +(cherry picked from commit a94fcee9616ef52d0f1d6453515a104d69c6cb92) + +Origin: upstream, after 45.0 +--- + js/ui/overview.js | 14 +++++--------- + 1 file changed, 5 insertions(+), 9 deletions(-) + +diff --git a/js/ui/overview.js b/js/ui/overview.js +index 66a83cf..2b173a5 100644 +--- a/js/ui/overview.js ++++ b/js/ui/overview.js +@@ -305,6 +305,11 @@ export class Overview extends Signals.EventEmitter { + `${this._shownState} to ${state}`); + } + ++ if (this._shownState === OverviewShownState.HIDDEN) ++ Meta.disable_unredirect_for_display(global.display); ++ else if (state === OverviewShownState.HIDDEN) ++ Meta.enable_unredirect_for_display(global.display); ++ + this._shownState = state; + this.emit(OVERVIEW_SHOWN_TRANSITIONS[state].signal); + } +@@ -411,8 +416,6 @@ export class Overview extends Signals.EventEmitter { + + _gestureUpdate(tracker, progress) { + if (!this._shown) { +- Meta.disable_unredirect_for_display(global.display); +- + this._shown = true; + this._visible = true; + this._visibleTarget = true; +@@ -567,8 +570,6 @@ export class Overview extends Signals.EventEmitter { + this._visibleTarget = true; + this._activationTime = GLib.get_monotonic_time() / GLib.USEC_PER_SEC; + +- Meta.disable_unredirect_for_display(global.display); +- + Main.layoutManager.overviewGroup.set_child_above_sibling( + this._coverPane, null); + this._coverPane.show(); +@@ -636,9 +637,6 @@ export class Overview extends Signals.EventEmitter { + } + + _hideDone() { +- // Re-enable unredirection +- Meta.enable_unredirect_for_display(global.display); +- + this._coverPane.hide(); + + this._visible = false; +@@ -688,8 +686,6 @@ export class Overview extends Signals.EventEmitter { + // the animation because of a race in the xserver where the grab + // fails when requested very early during startup. + +- Meta.disable_unredirect_for_display(global.display); +- + this._changeShownState(OverviewShownState.SHOWING); + + this._overview.runStartupAnimation(() => { diff -Nru gnome-shell-45.0/debian/patches/series gnome-shell-45.0/debian/patches/series --- gnome-shell-45.0/debian/patches/series 2023-09-18 15:22:07.000000000 +0000 +++ gnome-shell-45.0/debian/patches/series 2023-10-03 18:16:54.000000000 +0000 @@ -25,3 +25,5 @@ ubuntu/main-Support-loading-multiple-Yaru-theme-variants.patch ubuntu/darkMode-Add-support-to-Yaru-theme-color-variants.patch ubuntu/shell-global-util-Do-not-move-snap-apps-to-gnome-apps-sco.patch +overview-Handle-unredirection-in-OverviewShown-state-mach.patch +layout-Destroy-panel-barrier-on-shutdown.patch