From: Daniel Wagner <[email protected]>
---
include/notifier.h | 2 ++
src/connman.h | 2 ++
src/notifier.c | 24 ++++++++++++++++++++++++
src/service.c | 6 ++++++
4 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/include/notifier.h b/include/notifier.h
index 5efae71..7ac7c99 100644
--- a/include/notifier.h
+++ b/include/notifier.h
@@ -43,6 +43,8 @@ struct connman_notifier {
const char *name;
int priority;
void (*default_changed) (struct connman_service *service);
+ void (*service_add) (struct connman_service *service);
+ void (*service_remove) (struct connman_service *service);
void (*service_enabled) (enum connman_service_type type,
connman_bool_t enabled);
void (*offline_mode) (connman_bool_t enabled);
diff --git a/src/connman.h b/src/connman.h
index ac56ef2..8adf909 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -596,6 +596,8 @@ void __connman_notifier_list_connected(DBusMessageIter
*iter, void *user_data);
void __connman_notifier_register(enum connman_service_type type);
void __connman_notifier_unregister(enum connman_service_type type);
+void __connman_notifier_service_add(struct connman_service *service);
+void __connman_notifier_service_remove(struct connman_service *service);
void __connman_notifier_enable(enum connman_service_type type);
void __connman_notifier_disable(enum connman_service_type type);
void __connman_notifier_connect(enum connman_service_type type);
diff --git a/src/notifier.c b/src/notifier.c
index 846546b..27e53a1 100644
--- a/src/notifier.c
+++ b/src/notifier.c
@@ -385,6 +385,30 @@ void __connman_notifier_default_changed(struct
connman_service *service)
}
}
+void __connman_notifier_service_add(struct connman_service *service)
+{
+ GSList *list;
+
+ for (list = notifier_list; list; list = list->next) {
+ struct connman_notifier *notifier = list->data;
+
+ if (notifier->service_add)
+ notifier->service_add(service);
+ }
+}
+
+void __connman_notifier_service_remove(struct connman_service *service)
+{
+ GSList *list;
+
+ for (list = notifier_list; list; list = list->next) {
+ struct connman_notifier *notifier = list->data;
+
+ if (notifier->service_remove)
+ notifier->service_remove(service);
+ }
+}
+
void __connman_notifier_proxy_changed(struct connman_service *service)
{
GSList *list;
diff --git a/src/service.c b/src/service.c
index f18cd33..24996da 100644
--- a/src/service.c
+++ b/src/service.c
@@ -2938,6 +2938,8 @@ static void service_free(gpointer user_data)
g_hash_table_remove(service_hash, service->identifier);
+ __connman_notifier_service_remove(service);
+
stats_stop(service);
__connman_storage_save_service(service);
@@ -4857,6 +4859,8 @@ struct connman_service *
__connman_service_create_from_network(struct connman_ne
__connman_service_auto_connect();
}
+ __connman_notifier_service_add(service);
+
return service;
}
@@ -5017,6 +5021,8 @@ __connman_service_create_from_provider(struct
connman_provider *provider)
service_register(service);
+ __connman_notifier_service_add(service);
+
return service;
}
--
1.7.4.2
_______________________________________________
connman mailing list
[email protected]
http://lists.connman.net/listinfo/connman