From 6625c06d5da50979ea4a350a168abfa5cc1e8498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 3 Oct 2014 16:49:21 +0200 Subject: [PATCH 1/3] screencast: Don't leak recorders on failure ShellRecorder.record() may fail, remove the recorder from the map in that case. https://bugzilla.gnome.org/show_bug.cgi?id=737846 --- js/ui/screencast.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js/ui/screencast.js b/js/ui/screencast.js index 168f589..99f0366 100644 --- a/js/ui/screencast.js +++ b/js/ui/screencast.js @@ -109,6 +109,8 @@ const ScreencastService = new Lang.Class({ this._applyOptionalParameters(recorder, options); let [success, fileName] = recorder.record(); returnValue = [success, fileName ? fileName : '']; + if (!success) + this._stopRecordingForSender(sender); } invocation.return_value(GLib.Variant.new('(bs)', returnValue)); @@ -142,6 +144,8 @@ const ScreencastService = new Lang.Class({ this._applyOptionalParameters(recorder, options); let [success, fileName] = recorder.record(); returnValue = [success, fileName ? fileName : '']; + if (!success) + this._stopRecordingForSender(sender); } invocation.return_value(GLib.Variant.new('(bs)', returnValue)); -- 2.1.0 From 6c6e8f04f466909ed16670bc1c1ae77e30deb95d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 3 Oct 2014 16:40:49 +0200 Subject: [PATCH 2/3] screencast: Re-add lockdown support Commit 81bb7009ea120d3 removed support for the disable-disk-writes lockdown feature for screencasts, add it back. https://bugzilla.gnome.org/show_bug.cgi?id=737846 --- js/ui/screencast.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/js/ui/screencast.js b/js/ui/screencast.js index 99f0366..63caecb 100644 --- a/js/ui/screencast.js +++ b/js/ui/screencast.js @@ -41,6 +41,8 @@ const ScreencastService = new Lang.Class({ this._recorders = new Hash.Map(); + this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' }); + Main.sessionMode.connect('updated', Lang.bind(this, this._sessionModeChanged)); }, @@ -95,7 +97,8 @@ const ScreencastService = new Lang.Class({ ScreencastAsync: function(params, invocation) { let returnValue = [false, '']; - if (!Main.sessionMode.allowScreencast) { + if (!Main.sessionMode.allowScreencast || + this._lockdownSettings.get_boolean('disable-save-to-disk')) { invocation.return_value(GLib.Variant.new('(bs)', returnValue)); return; } @@ -118,7 +121,8 @@ const ScreencastService = new Lang.Class({ ScreencastAreaAsync: function(params, invocation) { let returnValue = [false, '']; - if (!Main.sessionMode.allowScreencast) { + if (!Main.sessionMode.allowScreencast || + this._lockdownSettings.get_boolean('disable-save-to-disk')) { invocation.return_value(GLib.Variant.new('(bs)', returnValue)); return; } -- 2.1.0 From 2cfc69f5ddfd126e2c2be5180e782e67c431631a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 3 Oct 2014 16:33:37 +0200 Subject: [PATCH 3/3] screenshot: Respect lockdown settings We allow users/admins to lock down disk writes, respect that when taking screenshots. https://bugzilla.gnome.org/show_bug.cgi?id=737846 --- js/ui/screenshot.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js index dd6448e..6e08fb5 100644 --- a/js/ui/screenshot.js +++ b/js/ui/screenshot.js @@ -64,12 +64,15 @@ const ScreenshotService = new Lang.Class({ this._screenShooter = new Hash.Map(); + this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' }); + Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null); }, _createScreenshot: function(invocation) { let sender = invocation.get_sender(); - if (this._screenShooter.has(sender)) { + if (this._screenShooter.has(sender) || + this._lockdownSettings.get_boolean('disable-save-to-disk')) { invocation.return_value(GLib.Variant.new('(bs)', [false, ''])); return null; } -- 2.1.0