mirror of
https://github.com/livekit/livekit.git
synced 2026-10-23 06:32:27 +00:00
Avoid locking in callback (#588)
This commit is contained in:
1 parent
130aefa597
commit
b695376086
2 files changed
+20
-4
No files matched your search
@@ -109,13 +109,13 @@ func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, code
|
||||
trackID := t.params.MediaTrack.ID()
|
||||
subscriberID := sub.ID()
|
||||
|
||||
t.subscribedTracksMu.Lock()
|
||||
defer t.subscribedTracksMu.Unlock()
|
||||
|
||||
// don't subscribe to the same track multiple times
|
||||
t.subscribedTracksMu.Lock()
|
||||
if _, ok := t.subscribedTracks[subscriberID]; ok {
|
||||
t.subscribedTracksMu.Unlock()
|
||||
return nil, nil
|
||||
}
|
||||
t.subscribedTracksMu.Unlock()
|
||||
|
||||
var rtcpFeedback []webrtc.RTCPFeedback
|
||||
switch t.params.MediaTrack.Kind() {
|
||||
@@ -257,7 +257,9 @@ func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, code
|
||||
sub.Negotiate()
|
||||
})
|
||||
|
||||
t.subscribedTracksMu.Lock()
|
||||
t.subscribedTracks[subscriberID] = subTrack
|
||||
t.subscribedTracksMu.Unlock()
|
||||
subTrack.SetPublisherMuted(t.params.MediaTrack.IsMuted())
|
||||
|
||||
// since sub will lock, run it in a goroutine to avoid deadlocks
|
||||
|
||||
+15
-1
@@ -1216,8 +1216,22 @@ func (p *ParticipantImpl) onSubscribedMaxQualityChange(trackID livekit.TrackID,
|
||||
SubscribedQualities: subscribedQualities,
|
||||
}
|
||||
|
||||
p.params.Telemetry.TrackMaxSubscribedVideoQuality(context.Background(), p.ID(), &livekit.TrackInfo{Sid: string(trackID), Type: livekit.TrackType_VIDEO}, maxSubscribedQuality)
|
||||
p.params.Telemetry.TrackMaxSubscribedVideoQuality(
|
||||
context.Background(),
|
||||
p.ID(),
|
||||
&livekit.TrackInfo{
|
||||
Sid: string(trackID),
|
||||
Type: livekit.TrackType_VIDEO,
|
||||
},
|
||||
maxSubscribedQuality,
|
||||
)
|
||||
|
||||
p.params.Logger.Debugw(
|
||||
"sending max subscribed quality",
|
||||
"trackID", trackID,
|
||||
"qualities", subscribedQualities,
|
||||
"max", maxSubscribedQuality,
|
||||
)
|
||||
return p.writeMessage(&livekit.SignalResponse{
|
||||
Message: &livekit.SignalResponse_SubscribedQualityUpdate{
|
||||
SubscribedQualityUpdate: subscribedQualityUpdate,
|
||||
|
||||
Reference in new issue
Block a user