start_gps = gconf_client_get_bool (priv->gconf,
AZIMUTH_GCONF_KEY_START_GPS, NULL);
- if (priv->publisher != NULL && start_gps)
+ if (priv->publisher != NULL &&
+ start_gps &&
+ position_publisher_has_connections (priv->publisher))
{
g_print ("starting GPS\n");
location_gpsd_control_start (priv->gps_control);
}
static void
+has_connections_changed_cb (PositionPublisher *publisher,
+ gboolean has_connections,
+ Azimuth *self)
+{
+ update_gps (self);
+}
+
+static void
create_publisher (Azimuth *self)
{
AzimuthPrivate *priv = AZIMUTH_GET_PRIVATE (self);
priv->publisher = position_publisher_new ();
+
+ g_signal_connect (priv->publisher, "has-connections-changed",
+ G_CALLBACK (has_connections_changed_cb), self);
}
static void