aboutsummaryrefslogtreecommitdiff
path: root/libindicator/indicator-service.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-01-28 21:41:58 -0800
committerTed Gould <ted@gould.cx>2010-01-28 21:41:58 -0800
commit32c331cea9362d3cf832e5df2b614c0ddca4576e (patch)
treedaaf0bb5a9e966649ba683b307407badf7aee16d /libindicator/indicator-service.c
parent8f6a206a4689150d8887dd653f13e72b2d320a15 (diff)
parent7c5818518d3bd0500c28ea42f0226fa40f066a94 (diff)
downloadlibayatana-indicator-32c331cea9362d3cf832e5df2b614c0ddca4576e.tar.gz
libayatana-indicator-32c331cea9362d3cf832e5df2b614c0ddca4576e.tar.bz2
libayatana-indicator-32c331cea9362d3cf832e5df2b614c0ddca4576e.zip
* Upstream merge
* Various fixes to timeout handling in servcies and the service manager.
Diffstat (limited to 'libindicator/indicator-service.c')
-rw-r--r--libindicator/indicator-service.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/libindicator/indicator-service.c b/libindicator/indicator-service.c
index e2ec6b2..fc3c7de 100644
--- a/libindicator/indicator-service.c
+++ b/libindicator/indicator-service.c
@@ -316,7 +316,12 @@ get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspe
static gboolean
timeout_no_watchers (gpointer data)
{
- g_signal_emit(G_OBJECT(data), signals[SHUTDOWN], 0, TRUE);
+ g_warning("No watchers, service timing out.");
+ if (g_getenv("INDICATOR_ALLOW_NO_WATCHERS") == NULL) {
+ g_signal_emit(G_OBJECT(data), signals[SHUTDOWN], 0, TRUE);
+ } else {
+ g_warning("\tblocked by environment variable.");
+ }
return FALSE;
}
@@ -329,16 +334,23 @@ try_and_get_name_cb (DBusGProxy * proxy, guint status, GError * error, gpointer
IndicatorService * service = INDICATOR_SERVICE(data);
g_return_if_fail(service != NULL);
+ if (error != NULL) {
+ g_warning("Unable to send message to request name: %s", error->message);
+ g_signal_emit(G_OBJECT(data), signals[SHUTDOWN], 0, TRUE);
+ return;
+ }
+
if (status != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER && status != DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER) {
/* The already owner seems like it shouldn't ever
happen, but I have a hard time throwing an error
on it as we did achieve our goals. */
+ g_warning("Name request failed. Status returned: %d", status);
g_signal_emit(G_OBJECT(data), signals[SHUTDOWN], 0, TRUE);
return;
}
IndicatorServicePrivate * priv = INDICATOR_SERVICE_GET_PRIVATE(service);
- priv->timeout = g_timeout_add(500, timeout_no_watchers, service);
+ priv->timeout = g_timeout_add_seconds(1, timeout_no_watchers, service);
return;
}