aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Terry <mike@mterry.name>2011-04-13 15:32:18 -0400
committerMichael Terry <mike@mterry.name>2011-04-13 15:32:18 -0400
commit0ecb2dd406a7981d197f57b33934b02fbf034b3d (patch)
tree2e551424cedbae7dad9a970d5b9c602f947271bb
parent8603d94b5950329aeb81bcf255fe7f4173eaf6c3 (diff)
downloadayatana-indicator-datetime-0ecb2dd406a7981d197f57b33934b02fbf034b3d.tar.gz
ayatana-indicator-datetime-0ecb2dd406a7981d197f57b33934b02fbf034b3d.tar.bz2
ayatana-indicator-datetime-0ecb2dd406a7981d197f57b33934b02fbf034b3d.zip
watch for resume in the service, not the indicator; update today's menu label after resume
-rw-r--r--src/datetime-service.c43
-rw-r--r--src/indicator-datetime.c40
2 files changed, 43 insertions, 40 deletions
diff --git a/src/datetime-service.c b/src/datetime-service.c
index 08b352a..08ff9ad 100644
--- a/src/datetime-service.c
+++ b/src/datetime-service.c
@@ -1199,6 +1199,40 @@ setup_timer (void)
return;
}
+static void
+session_active_change_cb (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name,
+ GVariant * parameters, gpointer user_data)
+{
+ // Just returned from suspend
+ if (g_strcmp0(signal_name, "SystemIdleHintChanged") == 0) {
+ gboolean idle = FALSE;
+ g_variant_get(parameters, "(b)", &idle);
+ if (!idle) {
+ datetime_interface_update(DATETIME_INTERFACE(user_data));
+ update_datetime(NULL);
+ setup_timer();
+ }
+ }
+ return;
+}
+
+/* for hooking into console kit signal on wake from suspend */
+static void
+system_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data)
+{
+ GError * error = NULL;
+
+ GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error);
+
+ if (error != NULL) {
+ g_warning("Could not grab DBus proxy for ConsoleKit: %s", error->message);
+ g_error_free(error);
+ return;
+ }
+
+ g_signal_connect(proxy, "g-signal", G_CALLBACK(session_active_change_cb), user_data);
+}
+
/* Callback from getting the address */
static void
geo_address_cb (GeoclueAddress * address, int timestamp, GHashTable * addy_data, GeoclueAccuracy * accuracy, GError * error, gpointer user_data)
@@ -1433,6 +1467,15 @@ main (int argc, char ** argv)
/* Setup the timer */
setup_timer();
+ /* And watch for system resumes */
+ g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
+ G_DBUS_PROXY_FLAGS_NONE,
+ NULL,
+ "org.freedesktop.ConsoleKit",
+ "/org/freedesktop/ConsoleKit/Manager",
+ "org.freedesktop.ConsoleKit.Manager",
+ NULL, system_proxy_cb, dbus);
+
mainloop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(mainloop);
diff --git a/src/indicator-datetime.c b/src/indicator-datetime.c
index b322cc6..1c05ff0 100644
--- a/src/indicator-datetime.c
+++ b/src/indicator-datetime.c
@@ -171,9 +171,7 @@ static void update_label (IndicatorDatetime * io, GDateTime **
static void guess_label_size (IndicatorDatetime * self);
static void setup_timer (IndicatorDatetime * self, GDateTime * datetime);
static void update_time (IndicatorDatetime * self);
-static void session_active_change_cb (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, GVariant * parameters, gpointer user_data);
static void receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name, GVariant * parameters, gpointer user_data);
-static void system_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data);
static void service_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data);
static gint generate_strftime_bitmask (const char *time_str);
static void timezone_update_labels (indicator_item_t * mi_data);
@@ -396,34 +394,8 @@ indicator_datetime_init (IndicatorDatetime *self)
service_proxy_cb,
self);
- g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
- G_DBUS_PROXY_FLAGS_NONE,
- NULL,
- "org.freedesktop.ConsoleKit",
- "/org/freedesktop/ConsoleKit/Manager",
- "org.freedesktop.ConsoleKit.Manager",
- NULL, system_proxy_cb, self);
return;
}
-/* for hooking into console kit signal on wake from suspend */
-static void
-system_proxy_cb (GObject * object, GAsyncResult * res, gpointer user_data)
-{
- GError * error = NULL;
-
- IndicatorDatetime * self = INDICATOR_DATETIME(user_data);
- g_return_if_fail(self != NULL);
-
- GDBusProxy * proxy = g_dbus_proxy_new_for_bus_finish(res, &error);
-
- if (error != NULL) {
- g_warning("Could not grab DBus proxy for %s: %s", SERVICE_NAME, error->message);
- g_error_free(error);
- return;
- }
- g_signal_connect(proxy, "g-signal", G_CALLBACK(session_active_change_cb), self);
-
-}
/* Callback from trying to create the proxy for the serivce, this
could include starting the service. Sometime it'll fail and
@@ -855,18 +827,6 @@ update_time (IndicatorDatetime * self)
return;
}
-static void
-session_active_change_cb (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name,
- GVariant * parameters, gpointer user_data)
-{
- // Just returned from suspend
- IndicatorDatetime * self = INDICATOR_DATETIME(user_data);
- if (g_strcmp0(signal_name, "SystemIdleHintChanged") == 0 && g_variant_get_boolean(parameters) == FALSE) {
- update_time(self);
- }
- return;
-}
-
/* Receives all signals from the service, routed to the appropriate functions */
static void
receive_signal (GDBusProxy * proxy, gchar * sender_name, gchar * signal_name,