int control_disconnect(struct btd_service *service) { struct control *control = btd_service_get_user_data(service); if (!control->session) return -ENOTCONN; avctp_disconnect(control->session); return 0; }
static void path_unregister(void *data) { struct audio_device *dev = data; struct control *control = dev->control; DBG("Unregistered interface %s on path %s", AUDIO_CONTROL_INTERFACE, dev->path); if (control->session) avctp_disconnect(control->session); g_free(control); dev->control = NULL; }
static void path_unregister(void *data) { struct control *control = data; DBG("Unregistered interface %s on path %s", AUDIO_CONTROL_INTERFACE, device_get_path(control->dev)); if (control->session) avctp_disconnect(control->session); avctp_remove_state_cb(control->avctp_id); if (control->target) btd_service_unref(control->target); if (control->remote) btd_service_unref(control->remote); devices = g_slist_remove(devices, control); g_free(control); }