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