Only allow OnChange() to be called once
This commit is contained in:
parent
388f48b260
commit
d96dae1f13
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue