forked from Elara6331/infinitime
		
	Only allow OnChange() to be called once
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user