Implemented atomic session replacement.
This commit is contained in:
+23
-22
@@ -342,30 +342,31 @@ func main() {
|
||||
videoActive = videoStr != ""
|
||||
audioActive = audioStr != ""
|
||||
|
||||
if videoStr == "" {
|
||||
enqueueCommand(playback.SessionCommand{Kind: playback.CommandRemoveVideo})
|
||||
} else {
|
||||
enqueueCommand(playback.SessionCommand{
|
||||
Kind: playback.CommandSetVideo,
|
||||
Config: playback.FeedConfig{
|
||||
Domain: videoDomainStr,
|
||||
UUID: videoStr,
|
||||
Active: true,
|
||||
},
|
||||
})
|
||||
videoConfig := playback.FeedConfig{}
|
||||
if videoActive {
|
||||
videoConfig = playback.FeedConfig{
|
||||
Domain: videoDomainStr,
|
||||
UUID: videoStr,
|
||||
Active: true,
|
||||
}
|
||||
}
|
||||
if audioStr == "" {
|
||||
enqueueCommand(playback.SessionCommand{Kind: playback.CommandRemoveAudio})
|
||||
} else {
|
||||
enqueueCommand(playback.SessionCommand{
|
||||
Kind: playback.CommandSetAudio,
|
||||
Config: playback.FeedConfig{
|
||||
Domain: audioDomainStr,
|
||||
UUID: audioStr,
|
||||
Active: true,
|
||||
},
|
||||
})
|
||||
audioConfig := playback.FeedConfig{}
|
||||
if audioActive {
|
||||
audioConfig = playback.FeedConfig{
|
||||
Domain: audioDomainStr,
|
||||
UUID: audioStr,
|
||||
Active: true,
|
||||
}
|
||||
}
|
||||
|
||||
enqueueCommand(playback.SessionCommand{
|
||||
Kind: playback.CommandSetSession,
|
||||
Session: playback.SessionConfig{
|
||||
Video: videoConfig,
|
||||
Audio: audioConfig,
|
||||
SyncRequested: syncRequested,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
playbackDone := make(chan error, 1)
|
||||
|
||||
Reference in New Issue
Block a user