diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-10-10 16:18:56 +0300 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-10-16 15:38:43 +0200 |
commit | 23f5b907fa69474cbb1c5fe94510b482b3e97543 (patch) | |
tree | c650acdad053e8ca7f0a2f92e7d89ecb98fc99b3 /android/avrcp-lib.c | |
parent | 68a8abdafaf6863dca725e5ca6960acc73f2a1e3 (diff) | |
download | bluez-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.c | 12 |
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; } |