[gnome-code-assistance] [backends/jscommon] Implemented app dispose



commit 2d5db67a89de751e03ff96045cbdaaa02d04fc09
Author: Jesse van den Kieboom <jessevdk gmail com>
Date:   Sat Nov 9 10:32:37 2013 +0100

    [backends/jscommon] Implemented app dispose

 .../gnome/codeassistance/transport_dbus.js         |   24 ++++++++++++++++++++
 1 files changed, 24 insertions(+), 0 deletions(-)
---
diff --git a/backends/jscommon/gnome/codeassistance/transport_dbus.js 
b/backends/jscommon/gnome/codeassistance/transport_dbus.js
index f74b4cf..4040d24 100644
--- a/backends/jscommon/gnome/codeassistance/transport_dbus.js
+++ b/backends/jscommon/gnome/codeassistance/transport_dbus.js
@@ -28,6 +28,14 @@ var DiagnosticsIface = '<interface name="org.gnome.CodeAssist.Diagnostics">
   </method>                                                                     \
 </interface>';
 
+var FreedesktopDBusIface = '<interface name="org.freedesktop.DBus">             \
+  <signal name="NameOwnerChanged">                                              \
+    <arg direction="out" type="s"/>                                             \
+    <arg direction="out" type="s"/>                                             \
+    <arg direction="out" type="s"/>                                             \
+  </signal>                                                                     \
+</interface>';
+
 var Document = function(doc) {
     this._init(doc);
 };
@@ -70,6 +78,8 @@ function Server(conn, service, document) {
     this._init(conn, service, document);
 }
 
+const FreedesktopDBusProxy = Gio.DBusProxy.makeProxyWrapper(FreedesktopDBusIface);
+
 Server.prototype = {
     _init: function(conn, service, document) {
         this.conn = conn;
@@ -91,6 +101,20 @@ Server.prototype = {
                 this.services.push(s);
             }
         }
+
+        var proxy = new FreedesktopDBusProxy(Gio.DBus.session,
+                                             'org.freedesktop.DBus',
+                                             '/org/freedesktop/DBus');
+
+        proxy.connectSignal('NameOwnerChanged', Lang.bind(this, this.on_name_owner_changed));
+    },
+
+    on_name_owner_changed: function(emitter, senderName, parameters) {
+        [owner, oldname, newname] = parameters;
+
+        if (newname == '' && oldname in this.apps) {
+            this.dispose_app(this.apps[oldname]);
+        }
     },
 
     app: function(appid) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]