Only allow OnChange() to be called once

This commit is contained in:
Elara Musayelyan 2021-11-24 17:21:12 -08:00
parent 388f48b260
commit d96dae1f13

View file

@ -2,6 +2,7 @@ package player
import (
"strings"
"sync"
"github.com/godbus/dbus/v5"
"go.arsenm.dev/infinitime/internal/utils"
@ -10,6 +11,7 @@ import (
var (
method, monitor *dbus.Conn
monitorCh chan *dbus.Message
onChangeOnce sync.Once
)
// Init makes required connections to DBis and
@ -130,7 +132,7 @@ func (ct ChangeType) String() string {
// OnChange runs cb when a value changes
func OnChange(cb func(ChangeType, string)) {
go func() {
go onChangeOnce.Do(func() {
// For every message on channel
for msg := range monitorCh {
// Parse PropertiesChanged
@ -175,7 +177,7 @@ func OnChange(cb func(ChangeType, string)) {
}
}
}
}()
})
}
// getPlayerNames gets all DBus MPRIS player bus names