Decrements the reference count of session_bus
[platform/upstream/at-spi2-core.git] / atspi / atspi-misc.c
index 4c35df8..679e0da 100644 (file)
@@ -124,7 +124,7 @@ _atspi_bus ()
   if (!bus)
     atspi_init ();
   if (!bus)
-    g_error ("AT-SPI: COuldn't connect to accessibility bus. Is at-spi-bus-launcher running?");
+    g_error ("AT-SPI: Couldn't connect to accessibility bus. Is at-spi-bus-launcher running?");
   return bus;
 }
 
@@ -384,17 +384,11 @@ handle_name_owner_changed (DBusConnection *bus, DBusMessage *message, void *user
     else if (!new[0])
       registry_lost = TRUE;
   }
-  else
+  else if (app_hash)
   {
-    AtspiAccessible *desktop = atspi_get_desktop (0);
-    GList *l;
-    for (l = desktop->children; l; l = l->next)
-    {
-      AtspiAccessible *child = l->data;
-      if (!strcmp (child->parent.app->bus_name, old))
-        g_object_run_dispose (G_OBJECT (child->parent.app));
-    }
-    g_object_unref (desktop);
+    AtspiApplication *app = g_hash_table_lookup (app_hash, old);
+    if (app && app->bus_name && !strcmp(app->bus_name, name))
+      g_object_run_dispose (G_OBJECT (app));
   }
   return DBUS_HANDLER_RESULT_HANDLED;
 }
@@ -1503,7 +1497,7 @@ get_accessibility_bus_address_dbus (void)
     g_warning ("Error retrieving accessibility bus address: %s: %s",
                error.name, error.message);
     dbus_error_free (&error);
-    return NULL;
+    goto out;
   }
   
   {
@@ -1515,12 +1509,14 @@ get_accessibility_bus_address_dbus (void)
                                DBUS_TYPE_INVALID))
       {
        dbus_message_unref (reply);
-       return NULL;
+        goto out;
       }
     address = g_strdup (tmp_address);
     dbus_message_unref (reply);
   }
-  
+
+out:
+  dbus_connection_unref (session_bus);
   return address;
 }
 
@@ -1592,23 +1588,23 @@ atspi_get_a11y_bus (void)
 
 /**
  * atspi_set_timeout:
- *  @val: The timeout value, in milliseconds, or -1 to disable the timeout.
- *  @startup_time: The amount of time, in milliseconds, to allow to pass
- *  before enforcing timeouts on an application. Can be used to prevent
- *  timeout exceptions if an application is likely to block for an extended
- *  period of time on initialization. -1 can be passed to disable this
- *  behavior.
+ * @val: The timeout value, in milliseconds, or -1 to disable the timeout.
+ * @startup_time: The amount of time, in milliseconds, to allow to pass
+ * before enforcing timeouts on an application. Can be used to prevent
+ * timeout exceptions if an application is likely to block for an extended
+ * period of time on initialization. -1 can be passed to disable this
+ * behavior.
  *
- *  Set the timeout used for method calls. If this is not set explicitly,
- *  a default of 0.8 ms is used.
- *  Note that at-spi2-registryd currently uses a timeout of 3 seconds when
- *  sending a keyboard event notification. This means that, if an AT makes
- *  a call in response to the keyboard notification and the application
- *  being called does not respond before the timeout is reached,
- *  at-spi2-registryd will time out on the keyboard event notification and
- *  pass the key onto the application (ie, reply to indicate that the key
- *  was not consumed), so this may make it undesirable to set a timeout
- *  larger than 3 seconds.
+ * Set the timeout used for method calls. If this is not set explicitly,
+ * a default of 0.8 ms is used.
+ * Note that at-spi2-registryd currently uses a timeout of 3 seconds when
+ * sending a keyboard event notification. This means that, if an AT makes
+ * a call in response to the keyboard notification and the application
+ * being called does not respond before the timeout is reached,
+ * at-spi2-registryd will time out on the keyboard event notification and
+ * pass the key onto the application (ie, reply to indicate that the key
+ * was not consumed), so this may make it undesirable to set a timeout
+ * larger than 3 seconds.
  *
  * By default, the normal timeout is set to 800 ms, and the application startup
  * timeout is set to 15 seconds.