static void disconnect_cb(struct btd_device *btd_dev, gboolean removal, void *user_data) { struct audio_device *dev = user_data; struct dev_priv *priv = dev->priv; if (priv->state == AUDIO_STATE_DISCONNECTED) return; if (priv->disconnecting) return; priv->disconnecting = TRUE; device_remove_control_timer(dev); device_remove_avdtp_timer(dev); if (dev->control) avrcp_disconnect(dev); if (dev->sink && priv->sink_state != SINK_STATE_DISCONNECTED) sink_disconnect(dev, TRUE); else priv->disconnecting = FALSE; }
static int a2dp_sink_disconnect(struct btd_service *service) { struct btd_device *dev = btd_service_get_device(service); const char *path = device_get_path(dev); DBG("path %s", path); return sink_disconnect(service, FALSE); }