diff --git a/pkg/sfu/redprimaryreceiver.go b/pkg/sfu/redprimaryreceiver.go index 9df8d26ea..8b889f88c 100644 --- a/pkg/sfu/redprimaryreceiver.go +++ b/pkg/sfu/redprimaryreceiver.go @@ -88,6 +88,10 @@ func (r *RedPrimaryReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID) r.downTrackSpreader.Free(subscriberID) } +func (r *RedPrimaryReceiver) CanClose() bool { + return r.closed.Load() || r.downTrackSpreader.DownTrackCount() == 0 +} + func (r *RedPrimaryReceiver) Close() { r.closed.Store(true) for _, dt := range r.downTrackSpreader.ResetAndGetDownTracks() { diff --git a/pkg/sfu/redreceiver.go b/pkg/sfu/redreceiver.go index 7cc8ad08a..bc89de96d 100644 --- a/pkg/sfu/redreceiver.go +++ b/pkg/sfu/redreceiver.go @@ -85,6 +85,10 @@ func (r *RedReceiver) DeleteDownTrack(subscriberID livekit.ParticipantID) { r.downTrackSpreader.Free(subscriberID) } +func (r *RedReceiver) CanClose() bool { + return r.closed.Load() || r.downTrackSpreader.DownTrackCount() == 0 +} + func (r *RedReceiver) Close() { r.closed.Store(true) for _, dt := range r.downTrackSpreader.ResetAndGetDownTracks() {