screenshot: Cache ScreencastSupported property

The screencast service shuts down when not in use, so it is almost
certainly not running when handling the screencast shortcut.

Instead of making sure the service is restarted, just cache the
property when initializing the proxy.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2533>
This commit is contained in:
Florian Müllner 2022-11-06 13:06:44 +01:00 committed by Marge Bot
parent a2acecb491
commit 144daf200c

View File

@ -1017,6 +1017,7 @@ var ScreenshotUI = GObject.registerClass({
}); });
this._screencastInProgress = false; this._screencastInProgress = false;
this._screencastSupported = false;
this._screencastProxy = new ScreencastProxy( this._screencastProxy = new ScreencastProxy(
Gio.DBus.session, Gio.DBus.session,
@ -1028,7 +1029,8 @@ var ScreenshotUI = GObject.registerClass({
return; return;
} }
this._castButton.visible = this._screencastProxy.ScreencastSupported; this._screencastSupported = this._screencastProxy.ScreencastSupported;
this._castButton.visible = this._screencastSupported;
}); });
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' }); this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
@ -1450,7 +1452,7 @@ var ScreenshotUI = GObject.registerClass({
if (this._screencastInProgress) if (this._screencastInProgress)
return; return;
if (mode === UIMode.SCREENCAST && !this._screencastProxy.ScreencastSupported) if (mode === UIMode.SCREENCAST && !this._screencastSupported)
return; return;
this._castButton.checked = mode === UIMode.SCREENCAST; this._castButton.checked = mode === UIMode.SCREENCAST;