libmm-common,location-gps-raw: don't build dictionary if mandatory parameters missing

This commit is contained in:
Aleksander Morgado
2012-03-28 14:00:21 +02:00
parent 9116a58eb6
commit 19d53751a2

View File

@@ -203,31 +203,32 @@ mm_location_gps_raw_get_dictionary (MMLocationGpsRaw *self)
g_return_val_if_fail (MM_IS_LOCATION_GPS_RAW (self), NULL); g_return_val_if_fail (MM_IS_LOCATION_GPS_RAW (self), NULL);
/* If mandatory parameters are not found, return NULL */
if (!self->priv->utc_time ||
self->priv->longitude == MM_LOCATION_GPS_RAW_LONGITUDE_UNKNOWN ||
self->priv->latitude == MM_LOCATION_GPS_RAW_LATITUDE_UNKNOWN)
return NULL;
g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
g_variant_builder_add (&builder,
"{sv}",
PROPERTY_UTC_TIME,
g_variant_new_string (self->priv->utc_time));
g_variant_builder_add (&builder,
"{sv}",
PROPERTY_LONGITUDE,
g_variant_new_double (self->priv->longitude));
g_variant_builder_add (&builder,
"{sv}",
PROPERTY_LATITUDE,
g_variant_new_double (self->priv->latitude));
if (self->priv->utc_time && /* Altitude is optional */
self->priv->longitude != MM_LOCATION_GPS_RAW_LONGITUDE_UNKNOWN && if (self->priv->altitude != MM_LOCATION_GPS_RAW_ALTITUDE_UNKNOWN)
self->priv->latitude != MM_LOCATION_GPS_RAW_LATITUDE_UNKNOWN) {
g_variant_builder_add (&builder, g_variant_builder_add (&builder,
"{sv}", "{sv}",
PROPERTY_UTC_TIME, PROPERTY_ALTITUDE,
g_variant_new_string (self->priv->utc_time)); g_variant_new_double (self->priv->altitude));
g_variant_builder_add (&builder,
"{sv}",
PROPERTY_LONGITUDE,
g_variant_new_double (self->priv->longitude));
g_variant_builder_add (&builder,
"{sv}",
PROPERTY_LATITUDE,
g_variant_new_double (self->priv->latitude));
/* Altitude is optional */
if (self->priv->altitude != MM_LOCATION_GPS_RAW_ALTITUDE_UNKNOWN)
g_variant_builder_add (&builder,
"{sv}",
PROPERTY_ALTITUDE,
g_variant_new_double (self->priv->altitude));
}
return g_variant_ref_sink (g_variant_builder_end (&builder)); return g_variant_ref_sink (g_variant_builder_end (&builder));
} }