From 5f509855e24ba391c44f2af2a170e077aa0bc93f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 22 Jul 2020 10:32:49 +0000 Subject: [PATCH] backgroundManager: Always emit 'loaded' signal As backgrounds are cached, it is possible that we never emit the 'loaded' signal added in commit f386103bc1. We are relying on the signal though, so do the same as Background and emit the signal from an idle if the background was already loaded. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1371 (cherry picked from commit 5c550daecb18fff1ef98a48374ceec71f270ce89) --- js/ui/background.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/js/ui/background.js b/js/ui/background.js index 91e6be0f1..d08e2ec36 100644 --- a/js/ui/background.js +++ b/js/ui/background.js @@ -758,11 +758,19 @@ var BackgroundManager = class BackgroundManager { this._updateBackgroundActor(); }); - let loadedSignalId = background.connect('loaded', () => { - background.disconnect(loadedSignalId); - loadedSignalId = null; - this.emit('loaded'); - }); + let loadedSignalId; + if (background.isLoaded) { + GLib.idle_add(GLib.PRIORITY_DEFAULT, () => { + this.emit('loaded'); + return GLib.SOURCE_REMOVE; + }); + } else { + loadedSignalId = background.connect('loaded', () => { + background.disconnect(loadedSignalId); + loadedSignalId = null; + this.emit('loaded'); + }); + } backgroundActor.connect('destroy', () => { if (changeSignalId)