mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-30 00:12:50 -05:00
core: refactor to use a generic-compatible syncmap
This commit is contained in:
@@ -210,14 +210,13 @@ func (m *Manager) Subscribe(id string) chan FreedeskState {
|
||||
|
||||
func (m *Manager) Unsubscribe(id string) {
|
||||
if val, ok := m.subscribers.LoadAndDelete(id); ok {
|
||||
close(val.(chan FreedeskState))
|
||||
close(val)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Manager) NotifySubscribers() {
|
||||
state := m.GetState()
|
||||
m.subscribers.Range(func(key, value interface{}) bool {
|
||||
ch := value.(chan FreedeskState)
|
||||
m.subscribers.Range(func(key string, ch chan FreedeskState) bool {
|
||||
select {
|
||||
case ch <- state:
|
||||
default:
|
||||
@@ -227,8 +226,7 @@ func (m *Manager) NotifySubscribers() {
|
||||
}
|
||||
|
||||
func (m *Manager) Close() {
|
||||
m.subscribers.Range(func(key, value interface{}) bool {
|
||||
ch := value.(chan FreedeskState)
|
||||
m.subscribers.Range(func(key string, ch chan FreedeskState) bool {
|
||||
close(ch)
|
||||
m.subscribers.Delete(key)
|
||||
return true
|
||||
|
||||
@@ -3,6 +3,7 @@ package freedesktop
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/pkg/syncmap"
|
||||
"github.com/godbus/dbus/v5"
|
||||
)
|
||||
|
||||
@@ -41,5 +42,5 @@ type Manager struct {
|
||||
accountsObj dbus.BusObject
|
||||
settingsObj dbus.BusObject
|
||||
currentUID uint64
|
||||
subscribers sync.Map
|
||||
subscribers syncmap.Map[string, chan FreedeskState]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user