Skip to content

Commit

Permalink
improve: remove listManager locker;
Browse files Browse the repository at this point in the history
  • Loading branch information
MapoMagpie committed Feb 8, 2024
1 parent 69fac8b commit 51780f7
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 11 deletions.
3 changes: 2 additions & 1 deletion core/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ func Start(opts *Options) {
},
}

searchChan := make(chan string, 10)
searchChan := make(chan string, 20)
listManager := tui.NewListManager(searchChan)
listManager.SetFiles(fileNames)
model := tui.NewModel(listManager, menuFetcher, tui.MoveEvent, tui.EnterEvent, tui.ClearInputEvent, exitEvent, exportDictEvent)
Expand All @@ -160,6 +160,7 @@ func Start(opts *Options) {
for {
select {
case raw := <-searchChan:
listManager.NewList()
ctx, cancel := context.WithCancel(context.Background())
if cancelFunc != nil {
cancelFunc()
Expand Down
15 changes: 5 additions & 10 deletions tui/tui.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"os"
"sort"
"strings"
"sync"

tea "github.com/charmbracelet/bubbletea"
"golang.org/x/term"
Expand Down Expand Up @@ -39,11 +38,10 @@ type ListManager struct {
fileIndex int
setVer int
getVer int
lock sync.Mutex // do we need lock?
}

func NewListManager(searchChan chan<- string) *ListManager {
return &ListManager{SearchChan: searchChan, lock: sync.Mutex{}}
return &ListManager{SearchChan: searchChan}
}

func (l *ListManager) List() []ItemRender {
Expand All @@ -56,12 +54,10 @@ func (l *ListManager) List() []ItemRender {
l.currIndex = le - 1
}
if l.getVer != l.setVer {
l.lock.Lock()
sort.Slice(list, func(i, j int) bool {
return list[i].Order()-list[j].Order() > 0
})
l.getVer = l.setVer
l.lock.Unlock()
}
return list
}
Expand All @@ -78,20 +74,19 @@ func (l *ListManager) Curr() (ItemRender, error) {
}
}

func (l *ListManager) newSearch(inputs []string) {
l.lock.Lock()
func (l *ListManager) NewList() {
l.list = make([]ItemRender, 0)
}

func (l *ListManager) newSearch(inputs []string) {
log.Printf("send search key: %v", strings.Join(inputs, ""))
l.SearchChan <- strings.Join(inputs, "")
log.Printf("send search key finshed")
l.lock.Unlock()
}

func (l *ListManager) AppendList(rs []ItemRender) {
l.lock.Lock()
l.setVer++
l.list = append(l.list, rs...)
l.lock.Unlock()
}

func (l *ListManager) SetFiles(files []ItemRender) {
Expand Down

0 comments on commit 51780f7

Please sign in to comment.