diff options
author | Ted Gould <ted@gould.cx> | 2010-02-01 23:56:58 -0800 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-02-01 23:56:58 -0800 |
commit | 103f8b0b79cfaf3e90e4ea01987485155b450d03 (patch) | |
tree | ce4d6969ea812fcd2f0ca17479093f3de38ec6aa /libindicator/indicator-service-manager.c | |
parent | f5232a315c253f98b08aee7bb3ec4e5613340c6b (diff) | |
parent | 7c5818518d3bd0500c28ea42f0226fa40f066a94 (diff) | |
download | libayatana-indicator-103f8b0b79cfaf3e90e4ea01987485155b450d03.tar.gz libayatana-indicator-103f8b0b79cfaf3e90e4ea01987485155b450d03.tar.bz2 libayatana-indicator-103f8b0b79cfaf3e90e4ea01987485155b450d03.zip |
Better handling of some timeout conditions and more logging.
Diffstat (limited to 'libindicator/indicator-service-manager.c')
-rw-r--r-- | libindicator/indicator-service-manager.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libindicator/indicator-service-manager.c b/libindicator/indicator-service-manager.c index 7bb9a9b..20eddec 100644 --- a/libindicator/indicator-service-manager.c +++ b/libindicator/indicator-service-manager.c @@ -397,6 +397,15 @@ start_service_cb (DBusGProxy * proxy, guint status, GError * error, gpointer use INDICATOR_SERVICE_OBJECT, INDICATOR_SERVICE_INTERFACE, &error); + + if (error != NULL || priv->service_proxy == NULL) { + g_warning("Unable to create service proxy on '%s': %s", priv->name, error == NULL ? "(null)" : error->message); + priv->service_proxy = NULL; /* Should be already, but we want to be *really* sure. */ + g_error_free(error); + start_service_again(INDICATOR_SERVICE_MANAGER(user_data)); + return; + } + g_object_add_weak_pointer(G_OBJECT(priv->service_proxy), (gpointer *)&(priv->service_proxy)); g_signal_connect(G_OBJECT(priv->service_proxy), "destroy", G_CALLBACK(service_proxy_destroyed), user_data); @@ -432,7 +441,7 @@ start_service (IndicatorServiceManager * service) INDICATOR_SERVICE_INTERFACE, &error); - if (error != NULL) { + if (error != NULL || priv->service_proxy == NULL) { /* We don't care about the error, just start the service anyway. */ g_error_free(error); org_freedesktop_DBus_start_service_by_name_async (priv->dbus_proxy, @@ -476,6 +485,7 @@ start_service_again_cb (gpointer data) { IndicatorServiceManagerPrivate * priv = INDICATOR_SERVICE_MANAGER_GET_PRIVATE(data); priv->restart_count++; + g_debug("Restarting service '%s' count %d", priv->name, priv->restart_count); start_service(INDICATOR_SERVICE_MANAGER(data)); priv->restart_source = 0; return FALSE; |