m/fzf
1
0
mirror of https://github.com/junegunn/fzf.git synced 2025-11-17 07:43:39 -05:00

Remove unnecessary reader barrier on --filter mode

This commit is contained in:
Junegunn Choi
2019-11-11 12:53:03 +09:00
parent e975bd0c8d
commit 73c0a645e0
3 changed files with 14 additions and 11 deletions

View File

@@ -23,11 +23,12 @@ type Reader struct {
exec *exec.Cmd
command *string
killed bool
wait bool
}
// NewReader returns new Reader object
func NewReader(pusher func([]byte) bool, eventBox *util.EventBox, delimNil bool) *Reader {
return &Reader{pusher, eventBox, delimNil, int32(EvtReady), make(chan bool, 1), sync.Mutex{}, nil, nil, false}
func NewReader(pusher func([]byte) bool, eventBox *util.EventBox, delimNil bool, wait bool) *Reader {
return &Reader{pusher, eventBox, delimNil, int32(EvtReady), make(chan bool, 1), sync.Mutex{}, nil, nil, false, wait}
}
func (r *Reader) startEventPoller() {
@@ -39,7 +40,9 @@ func (r *Reader) startEventPoller() {
r.eventBox.Set(EvtReadNew, (*string)(nil))
pollInterval = readerPollIntervalMin
} else if atomic.LoadInt32(ptr) == int32(EvtReadFin) {
r.finChan <- true
if r.wait {
r.finChan <- true
}
return
} else {
pollInterval += readerPollIntervalStep
@@ -54,7 +57,9 @@ func (r *Reader) startEventPoller() {
func (r *Reader) fin(success bool) {
atomic.StoreInt32(&r.event, int32(EvtReadFin))
<-r.finChan
if r.wait {
<-r.finChan
}
r.mutex.Lock()
ret := r.command