diff --git a/pkg/player/player.go b/pkg/player/player.go index 5ed5e50..0d8e544 100644 --- a/pkg/player/player.go +++ b/pkg/player/player.go @@ -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