@@ -2295,42 +2295,49 @@ static void asha_transport_state_cb(int status, void *user_data)
media_request_reply(owner->pending, 0);
media_owner_remove(owner);
}
media_transport_remove_owner(transport);
}
asha_transport_sync_state(transport, asha_dev);
}
+static gboolean asha_transport_suspend_cb(void *user_data)
+{
+ asha_transport_state_cb(-1, user_data);
+
+ return FALSE;
+}
+
static guint transport_asha_resume(struct media_transport *transport,
struct media_owner *owner)
{
struct bt_asha_device *asha_dev = transport->data;
guint ret;
ret = bt_asha_device_start(asha_dev, asha_transport_state_cb, owner);
asha_transport_sync_state(transport, asha_dev);
return ret > 0 ? ret : 0;
}
static guint transport_asha_suspend(struct media_transport *transport,
struct media_owner *owner)
{
struct bt_asha_device *asha_dev = transport->data;
guint ret = 0;
if (owner) {
ret = bt_asha_device_stop(asha_dev);
asha_transport_sync_state(transport, asha_dev);
- asha_transport_state_cb(-1, owner);
+ g_idle_add(asha_transport_suspend_cb, owner);
} else {
ret = bt_asha_device_stop(asha_dev);
/* We won't have a callback to set the final state */
transport_set_state(transport, TRANSPORT_STATE_IDLE);
}
return ret;
}
static void transport_asha_cancel(struct media_transport *transport, guint id)