diff mbox series

[BlueZ] audio/player: Update track duration if previously set to 0

Message ID 20250527064615.125970-1-frederic.danis@collabora.com
State New
Headers show
Series [BlueZ] audio/player: Update track duration if previously set to 0 | expand

Commit Message

Frédéric Danis May 27, 2025, 6:46 a.m. UTC
Sometimes some stacks may set the track duration to 0 in GetItemAttributes
before updating it in GetPlayStatus.

Currently the track duration is updated only if it has never been set
before. To fix the issue this also checks that the current value is
not 0.

> ACL Data RX: Handle 11 flags 0x02 dlen 102                                                                                                                                                                             #287 [hci0] 4.537033
      Channel: 71 len 98 ctrl 0x0202 [PSM 27 mode Enhanced Retransmission (0x03)] {chan 7}
      I-frame: Unsegmented TxSeq 1 ReqSeq 2
      AVCTP Browsing: Response: type 0x00 label 1 PID 0x110e
        AVRCP: GetItemAttributes: len 0x0058
...
          AttributeID: 0x00000007 (Track duration)
          CharsetID: 0x006a (UTF-8)
          AttributeLength: 0x0001 (1)
          AttributeValue: 0
...
> ACL Data RX: Handle 11 flags 0x02 dlen 26                                                                                                                                                                              #296 [hci0] 4.589649
      Channel: 68 len 22 [PSM 23 mode Basic (0x00)] {chan 4}
      AVCTP Control: Response: type 0x00 label 9 PID 0x110e
        AV/C: Stable: address 0x48 opcode 0x00
          Subunit: Panel
          Opcode: Vendor Dependent
          Company ID: 0x001958
          AVRCP: GetPlayStatus pt Single len 0x0009
            SongLength: 0x000255a8 (153000 miliseconds)
            SongPosition: 0x00009256 (37462 miliseconds)
            PlayStatus: 0x02 (PAUSED)
---
 profiles/audio/player.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

patchwork-bot+bluetooth@kernel.org May 27, 2025, 2 p.m. UTC | #1
Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Tue, 27 May 2025 08:46:15 +0200 you wrote:
> Sometimes some stacks may set the track duration to 0 in GetItemAttributes
> before updating it in GetPlayStatus.
> 
> Currently the track duration is updated only if it has never been set
> before. To fix the issue this also checks that the current value is
> not 0.
> 
> [...]

Here is the summary with links:
  - [BlueZ] audio/player: Update track duration if previously set to 0
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=bcababe6050d

You are awesome, thank you!
diff mbox series

Patch

diff --git a/profiles/audio/player.c b/profiles/audio/player.c
index 0f72d7601..52844c9c0 100644
--- a/profiles/audio/player.c
+++ b/profiles/audio/player.c
@@ -1320,9 +1320,9 @@  void media_player_set_duration(struct media_player *mp, uint32_t duration)
 	if (g_hash_table_size(mp->track) == 0)
 		return;
 
-	/* Ignore if duration is already set */
+	/* Ignore if duration is already set to value > 0 */
 	curval = g_hash_table_lookup(mp->track, "Duration");
-	if (curval != NULL)
+	if (curval != NULL && atoi(curval) != 0)
 		return;
 
 	value = g_strdup_printf("%u", duration);