privacy selector

This commit is contained in:
KingKDot
2026-07-10 23:44:46 -05:00
parent 43ee5a7d4b
commit 9adcbb24a5
9 changed files with 704 additions and 3 deletions
@@ -0,0 +1,54 @@
package privacy
import (
"sync"
"sync/atomic"
)
const inputMarker uintptr = 0x00D5E7B00B5
type Manager struct {
mu sync.Mutex
enabled int32
}
var global = &Manager{}
func Get() *Manager { return global }
func (m *Manager) IsEnabled() bool {
return atomic.LoadInt32(&m.enabled) != 0
}
func (m *Manager) Enable() error {
m.mu.Lock()
defer m.mu.Unlock()
if atomic.LoadInt32(&m.enabled) != 0 {
return nil
}
if err := enablePlatform(); err != nil {
atomic.StoreInt32(&m.enabled, 0)
return err
}
atomic.StoreInt32(&m.enabled, 1)
return nil
}
func (m *Manager) Disable() {
m.mu.Lock()
defer m.mu.Unlock()
if atomic.SwapInt32(&m.enabled, 0) == 0 {
return
}
disablePlatform()
}
func Start() error { return Get().Enable() }
func Stop() { Get().Disable() }
func IsEnabled() bool { return Get().IsEnabled() }
func InputMarker() uintptr { return inputMarker }