void gatt_remove_service(GDBusProxy *proxy)
{
- services = g_list_remove(services, proxy);
+ GList *l;
+
+ l = g_list_find(services, proxy);
+ if (!l)
+ return;
+
+ services = g_list_delete_link(services, l);
print_service(proxy, COLORED_DEL);
}
void gatt_remove_characteristic(GDBusProxy *proxy)
{
- if (!characteristic_is_child(proxy))
+ GList *l;
+
+ l = g_list_find(characteristics, proxy);
+ if (!l)
return;
- characteristics = g_list_remove(characteristics, proxy);
+ characteristics = g_list_delete_link(characteristics, l);
print_characteristic(proxy, COLORED_DEL);
}
void gatt_remove_descriptor(GDBusProxy *proxy)
{
- if (!descriptor_is_child(proxy))
+ GList *l;
+
+ l = g_list_find(descriptors, proxy);
+ if (!l)
return;
- descriptors = g_list_remove(descriptors, proxy);
+ descriptors = g_list_delete_link(descriptors, l);
print_descriptor(proxy, COLORED_DEL);
}
agent_unregister(dbus_conn, NULL);
}
} else if (!strcmp(interface, "org.bluez.GattService1")) {
- if (service_is_child(proxy)) {
- gatt_remove_service(proxy);
+ gatt_remove_service(proxy);
- if (default_attr == proxy)
- set_default_attribute(NULL);
- }
+ if (default_attr == proxy)
+ set_default_attribute(NULL);
} else if (!strcmp(interface, "org.bluez.GattCharacteristic1")) {
gatt_remove_characteristic(proxy);