overview: Sync grabs after running startup animation
In the nested session the startup animation sometimes fails, weirdly that always happens to me when running a freshly built gnome-shell the first time. The reason it fails is that mutter fails to aquire a pointer grab from the xserver, XIGrabDevice() is unsuccessful. A simple workaround for this race condition in the xserver is to just grab the devices a bit later, that is after the startups animation instead of before it. This was also tested with disabled animations, and seems to work just as well in that case. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1812>
This commit is contained in:
parent
e7780623fe
commit
954131c1c8
@ -649,13 +649,20 @@ var Overview = class {
|
||||
this._visible = true;
|
||||
this._visibleTarget = true;
|
||||
Main.layoutManager.showOverview();
|
||||
this._syncGrab();
|
||||
// We should call this._syncGrab() here, but moved it to happen after
|
||||
// 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.emit('showing');
|
||||
|
||||
this._overview.runStartupAnimation(() => {
|
||||
if (!this._syncGrab()) {
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
|
||||
Main.panel.style = null;
|
||||
this.emit('shown');
|
||||
callback();
|
||||
|
Loading…
Reference in New Issue
Block a user