X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fposition-publisher.c;fp=src%2Fposition-publisher.c;h=164638597cc57db1b37babd3ae337079604ade94;hb=4ac0a19873084437f9f59448c1c2cbf243da8e0e;hp=f04b870d71576f34fe45d1df4e593971e233b0dc;hpb=e7d80a3c782dccb1e05d04eee15f2266b433346e;p=azimuth diff --git a/src/position-publisher.c b/src/position-publisher.c index f04b870..1646385 100644 --- a/src/position-publisher.c +++ b/src/position-publisher.c @@ -39,6 +39,14 @@ enum LAST_PROPERTY }; +enum +{ + SIG_HAS_CONNECTIONS_CHANGED, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + /* Minimum time before 2 publishing (in seconds) */ #define PUBLISH_THROTTLE 10 @@ -81,6 +89,12 @@ remove_connection (PositionPublisher *self, self); priv->connections = g_slist_remove (priv->connections, conn); g_object_unref (conn); + + if (g_slist_length (priv->connections) == 0) + { + g_print ("We don't have location connection any more\n"); + g_signal_emit (self, signals[SIG_HAS_CONNECTIONS_CHANGED], 0, FALSE); + } } static void @@ -243,6 +257,13 @@ connection_added_cb (ConnectionWatcher *watcher, priv->connections = g_slist_prepend (priv->connections, g_object_ref (conn)); + if (g_slist_length (priv->connections) == 1) + { + /* We just added the first connection */ + g_print ("We have location connection\n"); + g_signal_emit (self, signals[SIG_HAS_CONNECTIONS_CHANGED], 0, TRUE); + } + g_signal_connect (conn, "invalidated", G_CALLBACK (conn_invalidated_cb), self); @@ -306,6 +327,16 @@ position_publisher_class_init (PositionPublisherClass *position_publisher_class) G_PARAM_CONSTRUCT | G_PARAM_WRITABLE | G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_BLUR, param_spec); + + signals[SIG_HAS_CONNECTIONS_CHANGED] = g_signal_new ( + "has-connections-changed", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, + 1, G_TYPE_BOOLEAN); } void