diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-04-08 19:51:41 +0800 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2010-04-08 21:51:50 +0800 |
commit | 093c7b7b64293adb9e8e31d08e557320a47dc757 (patch) | |
tree | 3da8421dce55f953c4bf71200388e7e9ee225c9a | |
parent | ee8b4ad4f89343de7e965a2414e1f746bd018b5a (diff) | |
download | gsoc2013-empathy-093c7b7b64293adb9e8e31d08e557320a47dc757.tar gsoc2013-empathy-093c7b7b64293adb9e8e31d08e557320a47dc757.tar.gz gsoc2013-empathy-093c7b7b64293adb9e8e31d08e557320a47dc757.tar.bz2 gsoc2013-empathy-093c7b7b64293adb9e8e31d08e557320a47dc757.tar.lz gsoc2013-empathy-093c7b7b64293adb9e8e31d08e557320a47dc757.tar.xz gsoc2013-empathy-093c7b7b64293adb9e8e31d08e557320a47dc757.tar.zst gsoc2013-empathy-093c7b7b64293adb9e8e31d08e557320a47dc757.zip |
geocode_cb: don't update location if we didn't get the full position
-rw-r--r-- | libempathy/empathy-contact.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c index 4f554419c..387370097 100644 --- a/libempathy/empathy-contact.c +++ b/libempathy/empathy-contact.c @@ -1239,26 +1239,23 @@ geocode_cb (GeoclueGeocode *geocode, if (error != NULL) { DEBUG ("Error geocoding location : %s", error->message); - g_object_unref (geocode); - g_object_unref (contact); - return; + goto out; } - if (fields & GEOCLUE_POSITION_FIELDS_LATITUDE) - { - new_value = tp_g_value_slice_new_double (latitude); - g_hash_table_replace (location, g_strdup (EMPATHY_LOCATION_LAT), - new_value); - DEBUG ("\t - Latitude: %f", latitude); - } + /* No need to change location if we didn't find the position */ + if (!(fields & GEOCLUE_POSITION_FIELDS_LATITUDE)) + goto out; - if (fields & GEOCLUE_POSITION_FIELDS_LONGITUDE) - { - new_value = tp_g_value_slice_new_double (longitude); - g_hash_table_replace (location, g_strdup (EMPATHY_LOCATION_LON), - new_value); - DEBUG ("\t - Longitude: %f", longitude); - } + if (!(fields & GEOCLUE_POSITION_FIELDS_LONGITUDE)) + goto out; + + g_hash_table_insert (location, g_strdup (EMPATHY_LOCATION_LAT), + tp_g_value_slice_new_double (latitude)); + DEBUG ("\t - Latitude: %f", latitude); + + g_hash_table_insert (location, g_strdup (EMPATHY_LOCATION_LON), + tp_g_value_slice_new_double (longitude)); + DEBUG ("\t - Longitude: %f", longitude); if (fields & GEOCLUE_POSITION_FIELDS_ALTITUDE) { @@ -1270,6 +1267,7 @@ geocode_cb (GeoclueGeocode *geocode, /* Don't change the accuracy as we used an address to get this position */ g_object_notify (contact, "location"); +out: g_object_unref (geocode); g_object_unref (contact); } |