From f86414989e9cabe7fd6ca5eab3e98e2a21d74594 Mon Sep 17 00:00:00 2001 From: Florian Thienel Date: Thu, 30 May 2024 13:42:22 +0200 Subject: [PATCH] sort out concurrency again --- core/logbook/qsolist.go | 15 ++++++++------- core/score/score.go | 2 -- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/core/logbook/qsolist.go b/core/logbook/qsolist.go index 22b0ade..631c6fe 100644 --- a/core/logbook/qsolist.go +++ b/core/logbook/qsolist.go @@ -144,6 +144,7 @@ func (l *QSOList) Fill(qsos []core.QSO) { l.dataLock.Unlock() + l.scorer.Unmute() l.emitQSOsCleared() for _, qso := range allQSOs { l.emitQSOAdded(qso) @@ -155,12 +156,14 @@ func (l *QSOList) Put(qso core.QSO) { emitNotifications := l.put(qso) + l.refreshScore() + allQSOs := l.all() l.dataLock.Unlock() - emitNotifications() + emitNotifications(allQSOs) } -func (l *QSOList) put(qso core.QSO) func() { +func (l *QSOList) put(qso core.QSO) func([]core.QSO) { if len(l.list) == 0 { return l.append(qso) } @@ -176,10 +179,8 @@ func (l *QSOList) put(qso core.QSO) func() { } else { l.update(index, qso) } - l.refreshScore() - qsos := l.all() - return func() { + return func(qsos []core.QSO) { l.scorer.Unmute() l.emitQSOsCleared() for _, qso := range qsos { @@ -213,7 +214,7 @@ func findIndex(list []core.QSO, number core.QSONumber) (int, bool) { return low, true } -func (l *QSOList) append(qso core.QSO) func() { +func (l *QSOList) append(qso core.QSO) func([]core.QSO) { score := l.scorer.AddMuted(qso) qso.Points = score.Points qso.Multis = score.Multis @@ -225,7 +226,7 @@ func (l *QSOList) append(qso core.QSO) func() { l.list = append(l.list, qso) - return func() { + return func([]core.QSO) { l.scorer.Unmute() l.emitQSOAdded(qso) } diff --git a/core/score/score.go b/core/score/score.go index 567e4e2..f928baa 100644 --- a/core/score/score.go +++ b/core/score/score.go @@ -172,8 +172,6 @@ func (c *Counter) Clear() { c.resetCounter() // CONVAL WRITE LOCK c.invalid = (c.contestSetup.MyCountry == "") - - c.emitScoreUpdated(c.readScore) // READ } func (c *Counter) AddMuted(qso core.QSO) core.QSOScore {