Backport missing screencast if gstreamer1-vaapi is installed
This commit is contained in:
parent
afc53bbc9f
commit
83294bac3a
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Name: gnome-shell
|
Name: gnome-shell
|
||||||
Version: 43.1
|
Version: 43.1
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: Window management and application launching for GNOME
|
Summary: Window management and application launching for GNOME
|
||||||
|
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
@ -14,6 +14,10 @@ Source0: https://download.gnome.org/sources/gnome-shell/43/%{name}-%{tarb
|
|||||||
# Fix layout switching in password entry boxes
|
# Fix layout switching in password entry boxes
|
||||||
Patch1: 2534.patch
|
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
|
# Replace Epiphany with Firefox in the default favourite apps list
|
||||||
Patch10001: gnome-shell-favourite-apps-firefox.patch
|
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*
|
%{_mandir}/man1/gnome-shell.1*
|
||||||
|
|
||||||
%changelog
|
%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
|
* Wed Nov 16 2022 Adam Williamson <awilliam@redhat.com> - 43.1-2
|
||||||
- Backport MR #2534 to fix layout switching in password entries
|
- 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