From 12a93f3e8e4c92fdc6242bf0543aec1de6fa04ab Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Aug 24 2022 10:13:21 +0000 Subject: import gnome-shell-3.32.2-48.el8 --- diff --git a/SOURCES/0002-background-rebuild-background-not-just-animation-on-.patch b/SOURCES/0002-background-rebuild-background-not-just-animation-on-.patch index de5f77a..3b436cb 100644 --- a/SOURCES/0002-background-rebuild-background-not-just-animation-on-.patch +++ b/SOURCES/0002-background-rebuild-background-not-just-animation-on-.patch @@ -1,8 +1,8 @@ -From 1a546d4df199f498b838efdccf081ada8ed1960b Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 15 Jan 2019 12:52:49 -0500 -Subject: [PATCH 2/4] background: rebuild background, not just animation on - resume +From f27c4224aa96975ae44641612f5fff3772f5c294 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Mon, 22 Aug 2022 13:06:05 +0200 +Subject: [PATCH] [PATCH 2/4] background: rebuild background, not just + animation on resume Previously, we would only refresh the animation on resume (to handle clock skew). @@ -14,7 +14,7 @@ so we should just do a full background change. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ui/background.js b/js/ui/background.js -index 06e038816..75b76a57e 100644 +index 2a404ae..dd11e3e 100644 --- a/js/ui/background.js +++ b/js/ui/background.js @@ -254,7 +254,7 @@ var Background = class Background { @@ -25,7 +25,7 @@ index 06e038816..75b76a57e 100644 + this.emit('changed'); }); - this._settingsChangedSignalId = this._settings.connect('changed', () => { + this._settingsChangedSignalId = -- -2.21.0 +2.35.3 diff --git a/SOURCES/fix-double-disposed-backgrounds.patch b/SOURCES/fix-double-disposed-backgrounds.patch new file mode 100644 index 0000000..7eebf77 --- /dev/null +++ b/SOURCES/fix-double-disposed-backgrounds.patch @@ -0,0 +1,101 @@ +From 49d066234f9f528122bb40c5144b40d8b19a0071 Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Mon, 22 Aug 2022 12:52:19 +0200 +Subject: [PATCH] Background: Avoid double dispose and actors recreations + +Subject: [PATCH 1/2] background: Use Garbage Collector to dispose background: + +The same Meta.Background could be used by multiple instances of background +actors, and so should not be disposed when the actor using it is destroyed. + +Instead of calling `run_dispose` directly on it, just nullify the reference +on destroy method, leaving the job of doing the proper disposition to the +gabage collector that keeps the proper reference count on the Meta.Background. + +Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/501 + +https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/558 + +Subject: [PATCH 2/2] background: Group 'changed' signal emission + +Background is monitoring the whole `org.gnome.desktop.background` gsettings keys +for changes connecting to the non-specialized 'changed' signal and re-emitting +this as-is. +This means that when the background is changed via control-center, we get +multiple 'changed' signal events from GSettings, and for each one of this we +recreate a Background and a BackgroundActor. + +Avoid this by using an idle to delay the emission of the 'changed' signal +grouping the events. + +https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/558 +--- + js/ui/background.js | 26 +++++++++++++++++++++----- + 1 file changed, 21 insertions(+), 5 deletions(-) + +diff --git a/js/ui/background.js b/js/ui/background.js +index 06e0388..2a404ae 100644 +--- a/js/ui/background.js ++++ b/js/ui/background.js +@@ -257,14 +257,15 @@ var Background = class Background { + this._refreshAnimation(); + }); + +- this._settingsChangedSignalId = this._settings.connect('changed', () => { +- this.emit('changed'); +- }); ++ this._settingsChangedSignalId = ++ this._settings.connect('changed', this._emitChangedSignal.bind(this)); + + this._load(); + } + + destroy() { ++ this.background = null; ++ + this._cancellable.cancel(); + this._removeAnimationTimeout(); + +@@ -288,6 +289,22 @@ var Background = class Background { + if (this._settingsChangedSignalId != 0) + this._settings.disconnect(this._settingsChangedSignalId); + this._settingsChangedSignalId = 0; ++ ++ if (this._changedIdleId) { ++ GLib.source_remove(this._changedIdleId); ++ this._changedIdleId = 0; ++ } ++ } ++ ++ _emitChangedSignal() { ++ if (this._changedIdleId) ++ return; ++ ++ this._changedIdleId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { ++ this._changedIdleId = 0; ++ this.emit('changed'); ++ return GLib.SOURCE_REMOVE; ++ }); + } + + updateResolution() { +@@ -343,7 +360,7 @@ var Background = class Background { + if (changedFile.equal(file)) { + let imageCache = Meta.BackgroundImageCache.get_default(); + imageCache.purge(changedFile); +- this.emit('changed'); ++ this._emitChangedSignal(); + } + }); + this._fileWatches[key] = signalId; +@@ -699,7 +716,6 @@ var BackgroundManager = class BackgroundManager { + time: FADE_ANIMATION_TIME, + transition: 'easeOutQuad', + onComplete() { +- oldBackgroundActor.background.run_dispose(); + oldBackgroundActor.destroy(); + } + }); +-- +2.35.3 + diff --git a/SPECS/gnome-shell.spec b/SPECS/gnome-shell.spec index ac23941..da494e9 100644 --- a/SPECS/gnome-shell.spec +++ b/SPECS/gnome-shell.spec @@ -1,6 +1,6 @@ Name: gnome-shell Version: 3.32.2 -Release: 47%{?dist} +Release: 48%{?dist} Summary: Window management and application launching for GNOME Group: User Interface/Desktops @@ -71,6 +71,7 @@ Patch59: 0001-shell-recorder-Restore-cursor-recording.patch Patch60: fix-invalid-access-warnings.patch Patch61: more-spurious-allocation-warnings.patch Patch62: fix-some-js-warnings.patch +Patch63: fix-double-disposed-backgrounds.patch # Backport performance fixes under load (#1820760) Patch70: 0001-environment-reduce-calls-to-g_time_zone_new_local.patch @@ -279,6 +280,10 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de %{_mandir}/man1/%{name}.1.gz %changelog +* Fri Aug 12 2022 Florian Müllner - 3.32.2-48 +- Fix warnings on double-disposed backgrounds + Resolves: #2116555 + * Wed May 11 2022 Phil Wyett - 3.32.2-47 - Restore missing cursor to screencast recordings Resolves: #1993420