Synchronize connection-owned stream access

This commit is contained in:
Brandon McGinty (chatgpt)
2026-08-10 11:25:08 -04:00
committed by Brandon McGinty
parent f0aa5ff35a
commit e9ba7f580a
6 changed files with 133 additions and 84 deletions
+35 -32
View File
@@ -3,6 +3,7 @@ package main
import (
"fmt"
"git.stormux.org/storm/barnard/gumble/gumble"
"git.stormux.org/storm/barnard/gumble/gumbleopenal"
"git.stormux.org/storm/barnard/uiterm"
"sort"
)
@@ -37,44 +38,46 @@ func (ti TreeItem) TreeItemStyle(fg, bg uiterm.Attribute, active bool) (uiterm.A
}
func (b *Barnard) changeVolume(users []*gumble.User, change float32) {
for _, u := range users {
if b.Stream == nil {
continue
b.withStream(func(stream *gumbleopenal.Stream) {
for _, u := range users {
var boost uint16
var ng float32
curboost := float32((u.Boost() - 1)) / 10
ng = u.Volume() + curboost + change
boost = uint16(1)
if ng > 1.0 {
perc := uint16((ng * 10)) - 10
perc += 1
boost = perc
ng = 1.0
}
if ng < 0 {
ng = 0.0
}
u.SetBoost(boost)
u.SetVolume(ng)
stream.UpdateUserGain(u)
b.UserConfig.UpdateConfig(u)
}
var boost uint16
var ng float32
curboost := float32((u.Boost() - 1)) / 10
ng = u.Volume() + curboost + change
boost = uint16(1)
if ng > 1.0 {
perc := uint16((ng * 10)) - 10
perc += 1
boost = perc
ng = 1.0
if err := b.UserConfig.SaveConfig(); err != nil {
b.AddOutputLine("Volume: could not save setting: " + err.Error())
}
if ng < 0 {
ng = 0.0
}
u.SetBoost(boost)
u.SetVolume(ng)
b.Stream.UpdateUserGain(u)
b.UserConfig.UpdateConfig(u)
}
b.UserConfig.SaveConfig()
})
}
func (b *Barnard) resetVolume(users []*gumble.User) {
for _, u := range users {
if b.Stream == nil {
continue
b.withStream(func(stream *gumbleopenal.Stream) {
for _, u := range users {
// Reset to original volume (1.0) and boost (1)
u.SetBoost(uint16(1))
u.SetVolume(1.0)
stream.UpdateUserGain(u)
b.UserConfig.UpdateConfig(u)
}
// Reset to original volume (1.0) and boost (1)
u.SetBoost(uint16(1))
u.SetVolume(1.0)
b.Stream.UpdateUserGain(u)
b.UserConfig.UpdateConfig(u)
}
b.UserConfig.SaveConfig()
if err := b.UserConfig.SaveConfig(); err != nil {
b.AddOutputLine("Volume: could not save setting: " + err.Error())
}
})
}
func makeUsersArray(users gumble.Users) []*gumble.User {