Send mute event only on change (#3537)

This commit is contained in:
Raja Subramanian authored and GitHub committed 2025-03-19 19:22:49 +05:30
1 parent 7f4c4597f1
commit 13417c01c6
2 files changed
+11 -11

No files matched your search

+7 -9
View File
@@ -2357,28 +2357,30 @@ func (p *ParticipantImpl) setTrackMuted(trackID livekit.TrackID, muted bool) *li
p.supervisor.SetPublicationMute(trackID, muted)
}
track := p.UpTrackManager.SetPublishedTrackMuted(trackID, muted)
track, changed := p.UpTrackManager.SetPublishedTrackMuted(trackID, muted)
var trackInfo *livekit.TrackInfo
if track != nil {
trackInfo = track.ToProto()
}
isPending := false
// update mute status in any pending/queued add track requests too
p.pendingTracksLock.RLock()
for _, pti := range p.pendingTracks {
for i, ti := range pti.trackInfos {
if livekit.TrackID(ti.Sid) == trackID {
ti = utils.CloneProto(ti)
changed = changed || ti.Muted != muted
ti.Muted = muted
pti.trackInfos[i] = ti
isPending = true
trackInfo = ti
if trackInfo == nil {
trackInfo = ti
}
}
}
}
p.pendingTracksLock.RUnlock()
if trackInfo != nil {
if trackInfo != nil && changed {
if muted {
p.params.Telemetry.TrackMuted(context.Background(), p.ID(), trackInfo)
} else {
@@ -2386,10 +2388,6 @@ func (p *ParticipantImpl) setTrackMuted(trackID livekit.TrackID, muted bool) *li
}
}
if !isPending && track == nil {
p.pubLogger.Debugw("could not locate track", "trackID", trackID)
}
return trackInfo
}
+4 -2
View File
@@ -116,13 +116,15 @@ func (u *UpTrackManager) OnPublishedTrackUpdated(f func(track types.MediaTrack))
u.onTrackUpdated = f
}
func (u *UpTrackManager) SetPublishedTrackMuted(trackID livekit.TrackID, muted bool) types.MediaTrack {
func (u *UpTrackManager) SetPublishedTrackMuted(trackID livekit.TrackID, muted bool) (types.MediaTrack, bool) {
changed := false
track := u.GetPublishedTrack(trackID)
if track != nil {
currentMuted := track.IsMuted()
track.SetMuted(muted)
if currentMuted != track.IsMuted() {
changed = true
u.params.Logger.Debugw("publisher mute status changed", "trackID", trackID, "muted", track.IsMuted())
if u.onTrackUpdated != nil {
u.onTrackUpdated(track)
@@ -130,7 +132,7 @@ func (u *UpTrackManager) SetPublishedTrackMuted(trackID livekit.TrackID, muted b
}
}
return track
return track, changed
}
func (u *UpTrackManager) GetPublishedTrack(trackID livekit.TrackID) types.MediaTrack {