'notify_addressed_player_changed()' expected to be called with 'player->changed_id' set to a non-zero value. player->changed_id = g_idle_add(notify_addressed_player_changed, player); And 'avrcp_player_event()' relies on 'player->changed_id' to perform Addressed Player Changed notification. However, 'avrcp_unregister_player()' calls 'notify_addressed_player_changed()' without adding it to the main loop and set 'player->changed_id'. To indicate addreddsed player changed for both scenarios, we set 'player->changed_id' to 1 at the head of 'notify_addressed_player_changed()'. Fixes https://github.com/bluez/bluez/issues/142 --- profiles/audio/avrcp.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/profiles/audio/avrcp.c b/profiles/audio/avrcp.c index 58d30b24d..ef721e17b 100644 --- a/profiles/audio/avrcp.c +++ b/profiles/audio/avrcp.c @@ -1794,6 +1794,12 @@ static gboolean notify_addressed_player_changed(gpointer user_data) }; uint8_t i; + /* + * Set changed_id to an non-zero value to indicate addreddsed player + * changed. + */ + player->changed_id = 1; + avrcp_player_event(player, AVRCP_EVENT_ADDRESSED_PLAYER_CHANGED, NULL); /* -- 2.31.1