Use Once instead of init()

This commit is contained in:
Marc Brooks 2025-09-26 12:46:53 -05:00
parent faa35a4dca
commit 9fafcfb94c
No known key found for this signature in database
GPG Key ID: 583A6AF2D6AE1DC6
1 changed files with 11 additions and 2 deletions

View File

@ -1078,15 +1078,20 @@ type RunningMacro struct {
var ( var (
keyboardMacroCancelMap map[uuid.UUID]RunningMacro keyboardMacroCancelMap map[uuid.UUID]RunningMacro
keyboardMacroLock sync.Mutex keyboardMacroLock sync.Mutex
keyboardMacroOnce sync.Once
) )
func init() { func getKeyboardMacroCancelMap() map[uuid.UUID]RunningMacro {
keyboardMacroCancelMap = make(map[uuid.UUID]RunningMacro) keyboardMacroOnce.Do(func() {
keyboardMacroCancelMap = make(map[uuid.UUID]RunningMacro)
})
return keyboardMacroCancelMap
} }
func addKeyboardMacro(isPaste bool, cancel context.CancelFunc) uuid.UUID { func addKeyboardMacro(isPaste bool, cancel context.CancelFunc) uuid.UUID {
keyboardMacroLock.Lock() keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock() defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
token := uuid.New() // Generate a unique token token := uuid.New() // Generate a unique token
keyboardMacroCancelMap[token] = RunningMacro{ keyboardMacroCancelMap[token] = RunningMacro{
@ -1099,6 +1104,7 @@ func addKeyboardMacro(isPaste bool, cancel context.CancelFunc) uuid.UUID {
func removeRunningKeyboardMacro(token uuid.UUID) { func removeRunningKeyboardMacro(token uuid.UUID) {
keyboardMacroLock.Lock() keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock() defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
delete(keyboardMacroCancelMap, token) delete(keyboardMacroCancelMap, token)
} }
@ -1106,6 +1112,7 @@ func removeRunningKeyboardMacro(token uuid.UUID) {
func cancelRunningKeyboardMacro(token uuid.UUID) { func cancelRunningKeyboardMacro(token uuid.UUID) {
keyboardMacroLock.Lock() keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock() defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
if runningMacro, exists := keyboardMacroCancelMap[token]; exists { if runningMacro, exists := keyboardMacroCancelMap[token]; exists {
runningMacro.cancel() runningMacro.cancel()
@ -1119,6 +1126,7 @@ func cancelRunningKeyboardMacro(token uuid.UUID) {
func cancelAllRunningKeyboardMacros() { func cancelAllRunningKeyboardMacros() {
keyboardMacroLock.Lock() keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock() defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
for token, runningMacro := range keyboardMacroCancelMap { for token, runningMacro := range keyboardMacroCancelMap {
runningMacro.cancel() runningMacro.cancel()
@ -1131,6 +1139,7 @@ func reportRunningMacrosState() {
if currentSession != nil { if currentSession != nil {
keyboardMacroLock.Lock() keyboardMacroLock.Lock()
defer keyboardMacroLock.Unlock() defer keyboardMacroLock.Unlock()
keyboardMacroCancelMap := getKeyboardMacroCancelMap()
isPaste := false isPaste := false
anyRunning := false anyRunning := false