diff options
author | Matt Ranostay <matt.ranostay@konsulko.com> | 2018-12-13 19:48:36 -0800 |
---|---|---|
committer | Matt Ranostay <matt.ranostay@konsulko.com> | 2018-12-14 06:24:14 +0000 |
commit | fe715ce75779fcf689b52114659799fca2554c2d (patch) | |
tree | 0e6bfd5871422dd68cba4b81482f4bc9e909d2d6 /binding/afm-mediaplayer-binding.c | |
parent | abb035ab5b74757cd7577f493bc30e7aac0f5227 (diff) |
binding: mediaplayer: fix connect/disconnect of a2dp/avrcp profiles
Bug-AGL: SPEC-1630
Change-Id: I38fc2c131b3d56a4b5a0a87f3bcd0eb27af5bb66
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
Diffstat (limited to 'binding/afm-mediaplayer-binding.c')
-rw-r--r-- | binding/afm-mediaplayer-binding.c | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/binding/afm-mediaplayer-binding.c b/binding/afm-mediaplayer-binding.c index 049fb2d..37cd85e 100644 --- a/binding/afm-mediaplayer-binding.c +++ b/binding/afm-mediaplayer-binding.c @@ -336,18 +336,24 @@ static void avrcp_controls(afb_req_t request) const char *value = afb_req_value(request, "value"); const char *action = NULL; afb_api_t api = afb_req_get_api(request); - int cmd = get_command_index(value), ret; + int cmd, ret; json_object *response, *jresp = NULL; - if (cmd < 0) { - afb_req_fail(request, "failed", "unknown command"); - return; - } + if (!g_strcmp0(value, "connect") || !g_strcmp0(value, "disconnect")) { + action = value; + } else { + cmd = get_command_index(value); - action = avrcp_control_commands[cmd]; - if (!action) { - afb_req_fail(request, "failed", "command not supported"); - return; + if (cmd < 0) { + afb_req_fail(request, "failed", "unknown command"); + return; + } + + action = avrcp_control_commands[cmd]; + if (!action) { + afb_req_fail(request, "failed", "command not supported"); + return; + } } jresp = json_object_new_object(); @@ -501,10 +507,13 @@ static void controls(afb_req_t request) } pthread_mutex_lock(&mutex); - if (data.avrcp_connected) + if (data.avrcp_connected || !g_strcmp0(value, "connect")) { + pthread_mutex_unlock(&mutex); avrcp_controls(request); - else - gstreamer_controls(request); + return; + } + + gstreamer_controls(request); pthread_mutex_unlock(&mutex); } |