From 7caf7854a64a12b157706d5ccc37a424582c1d6d Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Tue, 11 Jul 2023 23:23:57 +1000 Subject: [PATCH] [v2] Test locking event dispatch --- v2/internal/frontend/runtime/events.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/v2/internal/frontend/runtime/events.go b/v2/internal/frontend/runtime/events.go index ac9d6299c..e6aa721ab 100644 --- a/v2/internal/frontend/runtime/events.go +++ b/v2/internal/frontend/runtime/events.go @@ -32,6 +32,8 @@ type Events struct { } func (e *Events) Notify(sender frontend.Frontend, name string, data ...interface{}) { + e.notifyLock.Lock() + defer e.notifyLock.Unlock() e.notifyBackend(name, data...) for _, thisFrontend := range e.frontend { if thisFrontend == sender { @@ -54,6 +56,8 @@ func (e *Events) Once(eventName string, callback func(...interface{})) func() { } func (e *Events) Emit(eventName string, data ...interface{}) { + e.notifyLock.Lock() + defer e.notifyLock.Unlock() e.notifyBackend(eventName, data...) for _, thisFrontend := range e.frontend { thisFrontend.Notify(eventName, data...) @@ -116,9 +120,6 @@ func (e *Events) unRegisterListener(eventName string) { // Notify backend for the given event name func (e *Events) notifyBackend(eventName string, data ...interface{}) { - e.notifyLock.Lock() - defer e.notifyLock.Unlock() - // Get list of event listeners listeners := e.listeners[eventName] if listeners == nil {