Backport missing screencast if gstreamer1-vaapi is installed
This commit is contained in:
parent
afc53bbc9f
commit
83294bac3a
@ -2,7 +2,7 @@
|
||||
|
||||
Name: gnome-shell
|
||||
Version: 43.1
|
||||
Release: 2%{?dist}
|
||||
Release: 3%{?dist}
|
||||
Summary: Window management and application launching for GNOME
|
||||
|
||||
License: GPLv2+
|
||||
@ -14,6 +14,10 @@ Source0: https://download.gnome.org/sources/gnome-shell/43/%{name}-%{tarb
|
||||
# Fix layout switching in password entry boxes
|
||||
Patch1: 2534.patch
|
||||
|
||||
# Backport broken screen cast fix if gstreamer1-vaapi was installed.
|
||||
# https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2533
|
||||
Patch2: post-43.1-fixes.patch
|
||||
|
||||
# Replace Epiphany with Firefox in the default favourite apps list
|
||||
Patch10001: gnome-shell-favourite-apps-firefox.patch
|
||||
|
||||
@ -236,6 +240,9 @@ desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.de
|
||||
%{_mandir}/man1/gnome-shell.1*
|
||||
|
||||
%changelog
|
||||
* Thu Nov 17 2022 Jonas Ådahl <jadahl@redhat.com> - 43.1-3
|
||||
- Backport missing screencast if gstreamer1-vaapi is installed
|
||||
|
||||
* Wed Nov 16 2022 Adam Williamson <awilliam@redhat.com> - 43.1-2
|
||||
- Backport MR #2534 to fix layout switching in password entries
|
||||
|
||||
|
105
post-43.1-fixes.patch
Normal file
105
post-43.1-fixes.patch
Normal file
@ -0,0 +1,105 @@
|
||||
From 3851180cb02ab96d1ca18153fa3372bb46cdb691 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Sun, 6 Nov 2022 11:56:41 +0100
|
||||
Subject: [PATCH 1/2] dbusService/screencast: Hold during gstreamer checks
|
||||
|
||||
Some gstreamer plugins require a connection to the display server,
|
||||
so they block until the server is up and running. That's why we
|
||||
moved the check into the D-Bus service, so that the blocking would
|
||||
not lock up the compositor itself.
|
||||
|
||||
However the block can still delay the service initialization so
|
||||
much that auto-shutdown hits immediately when returning from the
|
||||
constructor. If that happens, the proxy on the shell side is no
|
||||
longer backed by a remote object when the init callback runs, and
|
||||
all properties therefore resolve as `null`.
|
||||
|
||||
As a result, gnome-shell thinks that screencasts aren't supported
|
||||
and hides the screencast button.
|
||||
|
||||
Fix this by holding the service during the gstreamer checks, so
|
||||
that the auto-shutdown timeout only starts after the service is
|
||||
ready.
|
||||
|
||||
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6051
|
||||
|
||||
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2533>
|
||||
(cherry picked from commit a2acecb491e53e889dd995d3db386aaa182e04a0)
|
||||
---
|
||||
js/dbusServices/screencast/screencastService.js | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/js/dbusServices/screencast/screencastService.js b/js/dbusServices/screencast/screencastService.js
|
||||
index f7f36da886..a2bb23cfea 100644
|
||||
--- a/js/dbusServices/screencast/screencastService.js
|
||||
+++ b/js/dbusServices/screencast/screencastService.js
|
||||
@@ -271,11 +271,14 @@ var ScreencastService = class extends ServiceImplementation {
|
||||
constructor() {
|
||||
super(ScreencastIface, '/org/gnome/Shell/Screencast');
|
||||
|
||||
+ this.hold(); // gstreamer initializing can take a bit
|
||||
this._canScreencast = ScreencastService.canScreencast();
|
||||
|
||||
Gst.init(null);
|
||||
Gtk.init();
|
||||
|
||||
+ this.release();
|
||||
+
|
||||
this._recorders = new Map();
|
||||
this._senders = new Map();
|
||||
|
||||
--
|
||||
2.38.1
|
||||
|
||||
|
||||
From 41235b44ae02be26aa290c66d5a2a1ec9e458568 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
|
||||
Date: Sun, 6 Nov 2022 13:06:44 +0100
|
||||
Subject: [PATCH 2/2] 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>
|
||||
(cherry picked from commit 144daf200c12f313c2cc7c01daef9e26e396a328)
|
||||
---
|
||||
js/ui/screenshot.js | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js
|
||||
index a01fbe3c94..b2ea6fad2b 100644
|
||||
--- a/js/ui/screenshot.js
|
||||
+++ b/js/ui/screenshot.js
|
||||
@@ -1017,6 +1017,7 @@ var ScreenshotUI = GObject.registerClass({
|
||||
});
|
||||
|
||||
this._screencastInProgress = false;
|
||||
+ this._screencastSupported = false;
|
||||
|
||||
this._screencastProxy = new ScreencastProxy(
|
||||
Gio.DBus.session,
|
||||
@@ -1028,7 +1029,8 @@ var ScreenshotUI = GObject.registerClass({
|
||||
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' });
|
||||
@@ -1450,7 +1452,7 @@ var ScreenshotUI = GObject.registerClass({
|
||||
if (this._screencastInProgress)
|
||||
return;
|
||||
|
||||
- if (mode === UIMode.SCREENCAST && !this._screencastProxy.ScreencastSupported)
|
||||
+ if (mode === UIMode.SCREENCAST && !this._screencastSupported)
|
||||
return;
|
||||
|
||||
this._castButton.checked = mode === UIMode.SCREENCAST;
|
||||
--
|
||||
2.38.1
|
||||
|
Loading…
Reference in New Issue
Block a user