5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-16 00:49:32 +08:00

Don't manipulate listeners array when expired

This commit is contained in:
Lea Anthony 2021-02-05 15:46:44 +11:00
parent 181a34f38d
commit cbd9eca6c3
No known key found for this signature in database
GPG Key ID: 33DAF7BB90A58405

View File

@ -139,18 +139,17 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
e.mu.Lock()
// Notify Go listeners
var listenersToRemove int
// Iterate listeners
for _, listener := range e.listeners[event.Name] {
// Call listener, perhaps with data
if event.Data == nil {
go listener.callback()
} else {
unpacked := event.Data.([]interface{})
go listener.callback(unpacked...)
if !listener.expired {
// Call listener, perhaps with data
if event.Data == nil {
go listener.callback()
} else {
unpacked := event.Data.([]interface{})
go listener.callback(unpacked...)
}
}
// Update listen counter
@ -158,22 +157,10 @@ func (e *Manager) Start(renderer interfaces.Renderer) {
listener.counter = listener.counter - 1
if listener.counter == 0 {
listener.expired = true
listenersToRemove++
}
}
}
// Remove expired listeners in place
if listenersToRemove > 0 {
listeners := e.listeners[event.Name]
for index, listener := range listeners {
if listener.expired {
listeners[index] = listeners[len(listeners)-1]
listeners[len(listeners)-1] = nil
e.listeners[event.Name] = listeners[:len(listeners)-1]
}
}
}
e.mu.Unlock()
case <-e.quitChannel: