Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Dear release team,

Could you please unblock package gnome-shell/3.14.2-2.

This upload includes a patch that defers the startup of the caribou
daemon (on screen keyboard) that is unfortunatelly known to consume
quite some resources (CPU time, memory and dbus trafic) even if a11y is
disabled on the user machine. (see: #769489).

Cheers,

Laurent Bigonville

unblock gnome-shell/3.14.2-2

-- System Information:
Debian Release: 8.0
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=fr_BE.utf8, LC_CTYPE=fr_BE.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
diff -Nru gnome-shell-3.14.2/debian/changelog gnome-shell-3.14.2/debian/changelog
--- gnome-shell-3.14.2/debian/changelog	2014-11-30 15:31:15.000000000 +0100
+++ gnome-shell-3.14.2/debian/changelog	2014-12-09 17:05:29.000000000 +0100
@@ -1,3 +1,11 @@
+gnome-shell (3.14.2-2) unstable; urgency=medium
+
+  * Add debian/patches/51-Delay-caribou-daemon-invocation.patch: Delay the
+    invocation of the caribou daemon until it's really needed, this should
+    workaround bugs like #769489.
+
+ -- Laurent Bigonville <bi...@debian.org>  Tue, 09 Dec 2014 17:05:28 +0100
+
 gnome-shell (3.14.2-1) unstable; urgency=medium
 
   * gnome-shell.gsettings-override: remove shotwell which is no longer 
diff -Nru gnome-shell-3.14.2/debian/patches/51-Delay-caribou-daemon-invocation.patch gnome-shell-3.14.2/debian/patches/51-Delay-caribou-daemon-invocation.patch
--- gnome-shell-3.14.2/debian/patches/51-Delay-caribou-daemon-invocation.patch	1970-01-01 01:00:00.000000000 +0100
+++ gnome-shell-3.14.2/debian/patches/51-Delay-caribou-daemon-invocation.patch	2014-12-08 17:30:59.000000000 +0100
@@ -0,0 +1,75 @@
+From 68d6389ee6b0b90fbc8a7532c98f758f1a2f2223 Mon Sep 17 00:00:00 2001
+From: Daiki Ueno <du...@src.gnome.org>
+Date: Thu, 6 Nov 2014 16:40:34 +0900
+Subject: [PATCH] keyboard: Delay caribou daemon invocation until really needed
+
+Calling g_dbus_proxy_new without any flag means that the caribou
+daemon will be launched through D-Bus activation, when creating
+a proxy.  It smoked out some corner cases in caribou and at-spi2-core,
+but generally it would be good to avoid creating unused process.
+
+This patch delays the invocation until the "Run" method is called.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=739712
+---
+ js/ui/keyboard.js | 34 ++++++++++++++++++++--------------
+ 1 file changed, 20 insertions(+), 14 deletions(-)
+
+diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js
+index 1855adc..8dc154b 100644
+--- a/js/ui/keyboard.js
++++ b/js/ui/keyboard.js
+@@ -187,14 +187,7 @@ const Keyboard = new Lang.Class({
+         this._watchNameId = Gio.bus_watch_name(Gio.BusType.SESSION, CURSOR_BUS_NAME, 0,
+                                                Lang.bind(this, this._sync),
+                                                Lang.bind(this, this._sync));
+-        this._daemonProxy = new CaribouDaemonProxy(Gio.DBus.session, CARIBOU_BUS_NAME,
+-                                                   CARIBOU_OBJECT_PATH,
+-                                                   Lang.bind(this, function(proxy, error) {
+-                                                       if (error) {
+-                                                           log(error.message);
+-                                                           return;
+-                                                       }
+-                                                   }));
++        this._daemonProxy = null;
+         this._cursorProxy = new CursorManagerProxy(Gio.DBus.session, CURSOR_BUS_NAME,
+                                                    CURSOR_OBJECT_PATH,
+                                                    Lang.bind(this, function(proxy, error) {
+@@ -256,15 +249,28 @@ const Keyboard = new Lang.Class({
+         this.actor = null;
+ 
+         this._destroySource();
+-        this._daemonProxy.QuitRemote(function (result, error) {
+-            if (error) {
+-                log(error.message);
+-                return;
+-            }
+-        });
++        if (this._daemonProxy) {
++            this._daemonProxy.QuitRemote(function (result, error) {
++                if (error) {
++                    log(error.message);
++                    return;
++                }
++            });
++            this._daemonProxy = null;
++        }
+     },
+ 
+     _setupKeyboard: function() {
++        if (!this._daemonProxy) {
++            this._daemonProxy = new CaribouDaemonProxy(Gio.DBus.session, CARIBOU_BUS_NAME,
++                                                       CARIBOU_OBJECT_PATH,
++                                                       Lang.bind(this, function(proxy, error) {
++                                                           if (error) {
++                                                               log(error.message);
++                                                               return;
++                                                           }
++                                                       }));
++        }
+         this._daemonProxy.RunRemote(function (result, error) {
+             if (error) {
+                 log(error.message);
+-- 
+2.1.3
+
diff -Nru gnome-shell-3.14.2/debian/patches/series gnome-shell-3.14.2/debian/patches/series
--- gnome-shell-3.14.2/debian/patches/series	2014-11-30 15:31:15.000000000 +0100
+++ gnome-shell-3.14.2/debian/patches/series	2014-12-08 17:47:50.000000000 +0100
@@ -5,3 +5,4 @@
 #30-remoteMenu-Prevent-the-shell-from-becoming-unrespons.patch
 41-handle-logind-fail.patch
 50-compute-weeknumber-with-gdatetime.patch
+51-Delay-caribou-daemon-invocation.patch

Reply via email to