adapter: Remove all targets when starting a poll
authorSamuel Ortiz <sameo@linux.intel.com>
Tue, 15 Nov 2011 11:59:15 +0000 (12:59 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Tue, 15 Nov 2011 11:59:15 +0000 (12:59 +0100)
src/adapter.c

index 7c968cb..0439237 100644 (file)
@@ -245,6 +245,13 @@ static DBusMessage *start_poll(DBusConnection *conn,
 
        DBG("conn %p", conn);
 
+       if (g_hash_table_size(adapter->targets) > 0) {
+               DBG("Clearing targets");
+
+               g_hash_table_remove_all(adapter->targets);
+               __near_adapter_target_changed(adapter->idx);
+       }
+
        err = __near_netlink_start_poll(adapter->idx, adapter->protocols);
        if (err < 0)
                return __near_error_failed(msg, -err);
@@ -413,6 +420,8 @@ int __near_adapter_remove_target(uint32_t idx, uint32_t target_idx)
 
        g_hash_table_remove(adapter->targets, GINT_TO_POINTER(target_idx));
 
+       __near_adapter_target_changed(idx);
+
        return 0;
 }