diff --git a/profiles/audio/avrcp.c b/profiles/audio/avrcp.c
index b8cc8f6..84860c8 100644
--- a/profiles/audio/avrcp.c
+++ b/profiles/audio/avrcp.c
avrcp_parse_attribute_list(player, &pdu->params[1], count);
+ avrcp_get_play_status(session);
+
return FALSE;
}
avrcp_parse_attribute_list(player, &pdu->params[2], count);
+ avrcp_get_play_status(session);
+
return FALSE;
}
avrcp_get_item_attributes(session, uid);
} else
avrcp_get_element_attributes(session);
-
- avrcp_get_play_status(session);
}
static void avrcp_setting_changed(struct avrcp *session,
diff --git a/profiles/audio/player.c b/profiles/audio/player.c
index 7295235..82b579f 100644
--- a/profiles/audio/player.c
+++ b/profiles/audio/player.c
DBG("%u", duration);
- value = g_strdup_printf("%u", duration);
+ /* Only update duration if track exists */
+ if (g_hash_table_size(mp->track) == 0)
+ return;
+ /* Ignore if duration is already set */
curval = g_hash_table_lookup(mp->track, "Duration");
- if (g_strcmp0(curval, value) == 0) {
- g_free(value);
+ if (curval != NULL)
return;
- }
+
+ value = g_strdup_printf("%u", duration);
g_hash_table_replace(mp->track, g_strdup("Duration"), value);