1
0
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:
bbedward
2025-11-15 19:44:47 -05:00
parent 4cb652abd9
commit 67557555f2
36 changed files with 936 additions and 543 deletions

View File

@@ -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

View File

@@ -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]
}