From d64c42ef982318c23562986a4b82a0f4f77f7122 Mon Sep 17 00:00:00 2001 From: Pierre-Luc Beaudoin Date: Wed, 27 May 2009 21:42:47 -0400 Subject: Don't use geoclue's timestamp It turns out that the timestamp are not reliable (they are often set to 0). --- libempathy-gtk/empathy-location-manager.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libempathy-gtk/empathy-location-manager.c b/libempathy-gtk/empathy-location-manager.c index 040bc619d..899850bf8 100644 --- a/libempathy-gtk/empathy-location-manager.c +++ b/libempathy-gtk/empathy-location-manager.c @@ -283,14 +283,16 @@ empathy_location_manager_get_default (void) } static void -update_timestamp (EmpathyLocationManager *location_manager, - int timestamp) +update_timestamp (EmpathyLocationManager *location_manager) { EmpathyLocationManagerPriv *priv; priv = GET_PRIV (location_manager); GValue *new_value; - gint64 stamp64 = (gint64) timestamp; + gint64 stamp64; + time_t timestamp; + timestamp = time (NULL); + stamp64 = (gint64) timestamp; new_value = tp_g_value_slice_new (G_TYPE_INT64); g_value_set_int64 (new_value, stamp64); g_hash_table_insert (priv->location, g_strdup (EMPATHY_LOCATION_TIMESTAMP), @@ -377,7 +379,7 @@ position_changed_cb (GeocluePosition *position, DEBUG ("\t - Accuracy: %f", mean); } - update_timestamp (location_manager, timestamp); + update_timestamp (location_manager); publish_location_to_all_accounts (EMPATHY_LOCATION_MANAGER (location_manager), FALSE); } @@ -438,9 +440,12 @@ address_changed_cb (GeoclueAddress *address, priv = GET_PRIV (location_manager); g_hash_table_remove_all (priv->location); + if (g_hash_table_size (details) == 0) + return; + g_hash_table_foreach (details, address_foreach_cb, (gpointer)location_manager); - update_timestamp (location_manager, timestamp); + update_timestamp (location_manager); publish_location_to_all_accounts (EMPATHY_LOCATION_MANAGER (location_manager), FALSE); } -- cgit v1.2.3