layout: Check again for primary monitor after startup animation idle
On some hardware combinations the display can be known, then unknown again. Meaining that when the update monitors function is called it will have a value, then be called again setting this.primaryMonitor to null. If the timing is just right gnome shell will loadBackground, then by the time the animation is ready the monitor will be gone, thus methods will be called on a null value. This adds more checks for a valid primary monitor, and wont play the animation until the system is idle AND has a valid priamry monitor. Fixes: #5003 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2144>
This commit is contained in:
parent
db68749335
commit
85b51b9974
@ -650,10 +650,14 @@ var LayoutManager = GObject.registerClass({
|
|||||||
// This helps to prevent us from running the animation
|
// This helps to prevent us from running the animation
|
||||||
// when the system is bogged down
|
// when the system is bogged down
|
||||||
const id = GLib.idle_add(GLib.PRIORITY_LOW, () => {
|
const id = GLib.idle_add(GLib.PRIORITY_LOW, () => {
|
||||||
|
if (this.primaryMonitor) {
|
||||||
this._systemBackground.show();
|
this._systemBackground.show();
|
||||||
global.stage.show();
|
global.stage.show();
|
||||||
this._prepareStartupAnimation();
|
this._prepareStartupAnimation();
|
||||||
return GLib.SOURCE_REMOVE;
|
return GLib.SOURCE_REMOVE;
|
||||||
|
} else {
|
||||||
|
return GLib.SOURCE_CONTINUE;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
GLib.Source.set_name_by_id(id, '[gnome-shell] Startup Animation');
|
GLib.Source.set_name_by_id(id, '[gnome-shell] Startup Animation');
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user