diff --git a/audio/a2dp.c b/audio/a2dp.c
index cc8f139..fa97645 100644
--- a/audio/a2dp.c
+++ b/audio/a2dp.c
void *user_data)
{
struct a2dp_sep *a2dp_sep = user_data;
+ struct a2dp_setup *setup;
+ gboolean start;
+ int start_err;
if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)
DBG("Sink %p: Suspend_Ind", sep);
a2dp_sep->session = NULL;
}
+ if (!a2dp_sep->suspending)
+ return TRUE;
+
+ a2dp_sep->suspending = FALSE;
+
+ setup = find_setup_by_session(session);
+ if (!setup)
+ return TRUE;
+
+ start = setup->start;
+ setup->start = FALSE;
+
+ finalize_suspend(setup);
+
+ if (!start)
+ return TRUE;
+
+ start_err = avdtp_start(session, a2dp_sep->stream);
+ if (start_err < 0) {
+ error("avdtp_start: %s (%d)", strerror(-start_err),
+ -start_err);
+ finalize_setup_errno(setup, start_err, finalize_resume);
+ }
+
return TRUE;
}
struct a2dp_sep *a2dp_sep = user_data;
struct a2dp_setup *setup;
gboolean start;
- int perr;
+ int start_err;
if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)
DBG("Sink %p: Suspend_Cfm", sep);
return;
}
- perr = avdtp_start(session, a2dp_sep->stream);
- if (perr < 0) {
- error("Error on avdtp_start %s (%d)", strerror(-perr), -perr);
- finalize_setup_errno(setup, -EIO, finalize_suspend, NULL);
+ start_err = avdtp_start(session, a2dp_sep->stream);
+ if (start_err < 0) {
+ error("avdtp_start: %s (%d)", strerror(-start_err),
+ -start_err);
+ finalize_setup_errno(setup, start_err, finalize_suspend, NULL);
}
}