Blob Blame History Raw
From 6625c06d5da50979ea4a350a168abfa5cc1e8498 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
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?= <fmuellner@gnome.org>
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?= <fmuellner@gnome.org>
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