[gnome-shell] layout: Show system background and animate on the same frame



commit 24742f35660f6f84e8c045eefaf372ae9a179322
Author: Daniel van Vugt <daniel van vugt canonical com>
Date:   Tue Mar 17 15:58:21 2020 +0800

    layout: Show system background and animate on the same frame
    
    Previously we'd show the system background and then wait till the
    main loop was idle before beginning the shell startup animation.
    This resulted in one initial frame that was always just the system
    background.
    
    Now we try to get both the system background and the startup animation
    begun on the same first frame.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1102

 js/ui/layout.js | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)
---
diff --git a/js/ui/layout.js b/js/ui/layout.js
index a02cab6415..f688fa2441 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -612,10 +612,20 @@ var LayoutManager = GObject.registerClass({
 
         let signalId = this._systemBackground.connect('loaded', () => {
             this._systemBackground.disconnect(signalId);
-            this._systemBackground.show();
-            global.stage.show();
 
-            this._prepareStartupAnimation();
+            // We're mostly prepared for the startup animation
+            // now, but since a lot is going on asynchronously
+            // during startup, let's defer the startup animation
+            // until the event loop is uncontended and idle.
+            // This helps to prevent us from running the animation
+            // when the system is bogged down
+            const id = GLib.idle_add(GLib.PRIORITY_LOW, () => {
+                this._systemBackground.show();
+                global.stage.show();
+                this._prepareStartupAnimation();
+                return GLib.SOURCE_REMOVE;
+            });
+            GLib.Source.set_name_by_id(id, '[gnome-shell] Startup Animation');
         });
     }
 
@@ -672,17 +682,7 @@ var LayoutManager = GObject.registerClass({
 
         this.emit('startup-prepared');
 
-        // We're mostly prepared for the startup animation
-        // now, but since a lot is going on asynchronously
-        // during startup, let's defer the startup animation
-        // until the event loop is uncontended and idle.
-        // This helps to prevent us from running the animation
-        // when the system is bogged down
-        let id = GLib.idle_add(GLib.PRIORITY_LOW, () => {
-            this._startupAnimation();
-            return GLib.SOURCE_REMOVE;
-        });
-        GLib.Source.set_name_by_id(id, '[gnome-shell] this._startupAnimation');
+        this._startupAnimation();
     }
 
     _startupAnimation() {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]