Media player objects may be shared between devices. As a result, a device without support for hardware volume that is connected after one that does may end up being erroneously considered hardware volume-capable. fa7828bdd ("transport: Fix not being able to initialize volume properly") introduced btd_device_{get,set}_volume that is used as an alternative in case no media player objects are present. Therefore, we can remove media_player_get_device_volume and instead use btd_device_get_volume to determine the initial volume. --- profiles/audio/avrcp.c | 2 +- profiles/audio/media.c | 33 +-------------------------------- profiles/audio/media.h | 1 - 3 files changed, 2 insertions(+), 34 deletions(-) diff --git a/profiles/audio/avrcp.c b/profiles/audio/avrcp.c index e2797112fcd580c3fc56793f933e00b1c61e5205..ec07522e6a34eb1dc5f6f413f48f1087a609df9a 100644 --- a/profiles/audio/avrcp.c +++ b/profiles/audio/avrcp.c @@ -4284,7 +4284,7 @@ static void target_init(struct avrcp *session) target->player = player; player->sessions = g_slist_prepend(player->sessions, session); - init_volume = media_player_get_device_volume(session->dev); + init_volume = btd_device_get_volume(session->dev); media_transport_update_device_volume(session->dev, init_volume); } diff --git a/profiles/audio/media.c b/profiles/audio/media.c index 8e62dca17070edbc5101677c6eebd3707492c824..55f1482d1d9ce52e104481bab3ede373f47aee0c 100644 --- a/profiles/audio/media.c +++ b/profiles/audio/media.c @@ -499,37 +499,6 @@ struct a2dp_config_data { a2dp_endpoint_config_t cb; }; -int8_t media_player_get_device_volume(struct btd_device *device) -{ -#ifdef HAVE_AVRCP - struct avrcp_player *target_player; - struct media_adapter *adapter; - GSList *l; - - if (!device) - return -1; - - target_player = avrcp_get_target_player_by_device(device); - if (!target_player) - goto done; - - adapter = find_adapter(device); - if (!adapter) - goto done; - - for (l = adapter->players; l; l = l->next) { - struct media_player *mp = l->data; - - if (mp->player == target_player) - return mp->volume; - } - -done: -#endif /* HAVE_AVRCP */ - /* If media_player doesn't exists use device_volume */ - return btd_device_get_volume(device); -} - static gboolean set_configuration(struct media_endpoint *endpoint, uint8_t *configuration, size_t size, media_endpoint_cb_t cb, @@ -556,7 +525,7 @@ static gboolean set_configuration(struct media_endpoint *endpoint, if (transport == NULL) return FALSE; - init_volume = media_player_get_device_volume(device); + init_volume = btd_device_get_volume(device); media_transport_update_volume(transport, init_volume); msg = dbus_message_new_method_call(endpoint->sender, endpoint->path, diff --git a/profiles/audio/media.h b/profiles/audio/media.h index 2b2e8e1572874d5f71abb28fdd5b92fa2d9efe83..d3954abd6de505a69cab3fcffc217d236a52d3e5 100644 --- a/profiles/audio/media.h +++ b/profiles/audio/media.h @@ -23,6 +23,5 @@ uint8_t media_endpoint_get_codec(struct media_endpoint *endpoint); struct btd_adapter *media_endpoint_get_btd_adapter( struct media_endpoint *endpoint); bool media_endpoint_is_broadcast(struct media_endpoint *endpoint); -int8_t media_player_get_device_volume(struct btd_device *device); const struct media_endpoint *media_endpoint_get_asha(void); -- 2.50.1