diff --git a/audio/sink.c b/audio/sink.c
index 4eb2c61..0628fd2 100644
--- a/audio/sink.c
+++ b/audio/sink.c
struct sink_state_callback *cb = l->data;
cb->cb(dev, old_state, new_state, cb->user_data);
}
+
+ if (new_state != SINK_STATE_DISCONNECTED)
+ return;
+
+ if (sink->session) {
+ avdtp_unref(sink->session);
+ sink->session = NULL;
+ }
}
static void avdtp_state_callback(struct audio_device *dev,
diff --git a/audio/source.c b/audio/source.c
index 41aedd2..e111954 100644
--- a/audio/source.c
+++ b/audio/source.c
struct source_state_callback *cb = l->data;
cb->cb(dev, old_state, new_state, cb->user_data);
}
+
+ if (new_state != SOURCE_STATE_DISCONNECTED)
+ return;
+
+ if (source->session) {
+ avdtp_unref(source->session);
+ source->session = NULL;
+ }
}
static void avdtp_state_callback(struct audio_device *dev,