Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion Sources/SwiftVLC/Player/Player.swift
Original file line number Diff line number Diff line change
Expand Up @@ -972,7 +972,13 @@ public final class Player {

// MARK: - Track Refresh

func refreshTracks() {
/// Refreshes all observable track lists from the native player.
///
/// The track arrays are asynchronously mirrored snapshots. Receiving the payload-free
/// ``PlayerEvent/tracksChanged`` or ``PlayerEvent/mediaChanged`` event does not guarantee
/// they are updated; consumers requiring an immediate native read should call this
/// method after either event. This also invalidates selected-track observations.
Comment on lines +977 to +980
public func refreshTracks() {
audioTracks = fetchTracks(type: .audio)
videoTracks = fetchTracks(type: .video)
subtitleTracks = fetchTracks(type: .subtitle)
Expand Down
16 changes: 16 additions & 0 deletions Tests/SwiftVLCTests/Player/PlayerPublicTrackRefreshTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import SwiftVLC
import Testing

@Suite(.tags(.mainActor))
@MainActor struct PlayerPublicTrackRefreshTests {
@Test
func `refreshTracks without media leaves public track lists empty`() {
let player = Player()

player.refreshTracks()

#expect(player.audioTracks.isEmpty)
#expect(player.videoTracks.isEmpty)
#expect(player.subtitleTracks.isEmpty)
}
}
Comment on lines +1 to +16
Loading