summaryrefslogtreecommitdiff
path: root/android/avrcp-lib.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-10-10 16:18:56 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-10-16 15:38:43 +0200
commit23f5b907fa69474cbb1c5fe94510b482b3e97543 (patch)
treec650acdad053e8ca7f0a2f92e7d89ecb98fc99b3 /android/avrcp-lib.c
parent68a8abdafaf6863dca725e5ca6960acc73f2a1e3 (diff)
downloadbluez-23f5b907fa69474cbb1c5fe94510b482b3e97543.tar.gz
android/avrcp-lib: Rework callback return
This allow callbacks to return 0 instead of -EAGAIN when responding asynchronously which is more consistent since it is not an error.
Diffstat (limited to 'android/avrcp-lib.c')
-rw-r--r--android/avrcp-lib.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/android/avrcp-lib.c b/android/avrcp-lib.c
index f3cdab967..60d6e97dd 100644
--- a/android/avrcp-lib.c
+++ b/android/avrcp-lib.c
@@ -496,6 +496,9 @@ static ssize_t handle_vendordep_pdu(struct avctp *conn, uint8_t transaction,
ret = handler->func(session, transaction, pdu->params_len, pdu->params,
session->control_data);
+ if (ret == 0)
+ return -EAGAIN;
+
if (ret < 0) {
if (ret == -EAGAIN)
return ret;
@@ -622,6 +625,9 @@ static ssize_t handle_browsing_pdu(struct avctp *conn,
ret = handler->func(session, transaction, pdu->params_len, pdu->params,
session->control_data);
+ if (ret == 0)
+ return -EAGAIN;
+
if (ret < 0) {
if (ret == -EAGAIN)
return ret;
@@ -1171,7 +1177,7 @@ static ssize_t request_continuing(struct avrcp *session, uint8_t transaction,
if (err < 0)
return -EINVAL;
- return -EAGAIN;
+ return 0;
}
static ssize_t abort_continuing(struct avrcp *session, uint8_t transaction,
@@ -1186,6 +1192,10 @@ static ssize_t abort_continuing(struct avrcp *session, uint8_t transaction,
continuing_free(session->continuing);
session->continuing = NULL;
+ avrcp_send_internal(session, transaction, AVC_CTYPE_ACCEPTED,
+ AVC_SUBUNIT_PANEL, AVRCP_ABORT_CONTINUING,
+ AVRCP_PACKET_TYPE_SINGLE, NULL, 0);
+
return 0;
}