aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-location-manager.c15
1 files 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);
}