[empathy] Simplify and clarify map_view_geocode_cb
- From: Pierre-Luc Beaudoin <plbeaudoin src gnome org>
- To: svn-commits-list gnome org
- Subject: [empathy] Simplify and clarify map_view_geocode_cb
- Date: Wed, 27 May 2009 12:57:02 -0400 (EDT)
commit 1a8aefd70a364e8b3e7eac6eda4f93bb04022d1e
Author: Pierre-Luc Beaudoin <pierre-luc pierlux com>
Date: Wed May 20 14:29:44 2009 -0400
Simplify and clarify map_view_geocode_cb
---
src/empathy-map-view.c | 23 ++++++++++++-----------
1 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/src/empathy-map-view.c b/src/empathy-map-view.c
index e9acdc2..7262f20 100644
--- a/src/empathy-map-view.c
+++ b/src/empathy-map-view.c
@@ -159,6 +159,10 @@ map_view_destroy_cb (GtkWidget *widget,
#define GEOCODE_SERVICE "org.freedesktop.Geoclue.Providers.Yahoo"
#define GEOCODE_PATH "/org/freedesktop/Geoclue/Providers/Yahoo"
+/* This callback is called by geoclue when it found a position
+ * for the given address. A position is necessary for a contact
+ * to show up on the map
+ */
static void
map_view_geocode_cb (GeoclueGeocode *geocode,
GeocluePositionFields fields,
@@ -170,11 +174,9 @@ map_view_geocode_cb (GeoclueGeocode *geocode,
gpointer userdata)
{
GValue *new_value;
- gboolean found = FALSE;
GHashTable *location;
location = empathy_contact_get_location (EMPATHY_CONTACT (userdata));
- g_hash_table_ref (location);
if (error != NULL)
{
@@ -184,30 +186,29 @@ map_view_geocode_cb (GeoclueGeocode *geocode,
if (fields & GEOCLUE_POSITION_FIELDS_LONGITUDE)
{
- new_value = tp_g_value_slice_new (G_TYPE_DOUBLE);
- g_value_set_double (new_value, longitude);
+ new_value = tp_g_value_slice_new_double (longitude);
g_hash_table_replace (location, EMPATHY_LOCATION_LON, new_value);
DEBUG ("\t - Longitude: %f", longitude);
}
if (fields & GEOCLUE_POSITION_FIELDS_LATITUDE)
{
- new_value = tp_g_value_slice_new (G_TYPE_DOUBLE);
- g_value_set_double (new_value, latitude);
+ new_value = tp_g_value_slice_new_double (latitude);
g_hash_table_replace (location, EMPATHY_LOCATION_LAT, new_value);
DEBUG ("\t - Latitude: %f", latitude);
- found = TRUE;
}
if (fields & GEOCLUE_POSITION_FIELDS_ALTITUDE)
{
- new_value = tp_g_value_slice_new (G_TYPE_DOUBLE);
- g_value_set_double (new_value, altitude);
+ new_value = tp_g_value_slice_new_double (altitude);
g_hash_table_replace (location, EMPATHY_LOCATION_ALT, new_value);
DEBUG ("\t - Altitude: %f", altitude);
}
/* Don't change the accuracy as we used an address to get this position */
- if (found == TRUE)
- empathy_contact_set_location (EMPATHY_CONTACT (userdata), location);
+
+ /* Ref the location hash table as it will be unref'd in set_location,
+ * and we are only updating it */
+ g_hash_table_ref (location);
+ empathy_contact_set_location (EMPATHY_CONTACT (userdata), location);
g_hash_table_unref (location);
}
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]