From b03e2270a068c017a1e15810cfe980d9cf696a22 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Thu, 8 Apr 2021 23:09:02 +1000 Subject: revert no-flicker due to carriage return weirdness --- vendor/github.com/jesseduffield/gocui/view.go | 43 ++++----------------------- vendor/modules.txt | 2 +- 2 files changed, 6 insertions(+), 39 deletions(-) (limited to 'vendor') diff --git a/vendor/github.com/jesseduffield/gocui/view.go b/vendor/github.com/jesseduffield/gocui/view.go index 2e4c4c1e3..b13074242 100644 --- a/vendor/github.com/jesseduffield/gocui/view.go +++ b/vendor/github.com/jesseduffield/gocui/view.go @@ -518,20 +518,16 @@ func (v *View) writeCells(x, y int, cells []cell) { // of functions like fmt.Fprintf, fmt.Fprintln, io.Copy, etc. Clear must // be called to clear the view's buffer. func (v *View) Write(p []byte) (n int, err error) { - v.writeMutex.Lock() - defer v.writeMutex.Unlock() - v.tainted = true + v.writeMutex.Lock() v.makeWriteable(v.wx, v.wy) v.writeRunes(bytes.Runes(p)) + v.writeMutex.Unlock() return len(p), nil } func (v *View) WriteRunes(p []rune) { - v.writeMutex.Lock() - defer v.writeMutex.Unlock() - v.tainted = true // Fill with empty cells, if writing outside current view buffer @@ -549,8 +545,6 @@ func (v *View) writeRunes(p []rune) { for _, r := range p { switch r { case '\n': - // clear the rest of the line - v.lines[v.wy] = v.lines[v.wy][0:v.wx] v.wy++ if v.wy >= len(v.lines) { v.lines = append(v.lines, nil) @@ -648,15 +642,6 @@ func (v *View) Read(p []byte) (n int, err error) { // Rewind sets read and write pos to (0, 0). func (v *View) Rewind() { - v.writeMutex.Lock() - defer v.writeMutex.Unlock() - - v.rewind() -} - -func (v *View) rewind() { - v.ei.reset() - if err := v.SetReadPos(0, 0); err != nil { // SetReadPos returns error only if x and y are negative // we are passing 0, 0, thus no error should occur. @@ -847,31 +832,13 @@ func (v *View) realPosition(vx, vy int) (x, y int, err error) { // And resets reading and writing offsets. func (v *View) Clear() { v.writeMutex.Lock() - defer v.writeMutex.Unlock() - - v.rewind() + v.Rewind() v.tainted = true + v.ei.reset() v.lines = nil v.viewLines = nil v.clearRunes() -} - -// This is for when we've done a rewind for the sake of avoiding a flicker and -// we've reached the end of the new content to display: we need to clear the remaining -// content from the previous round. -func (v *View) FlushStaleCells() { - v.writeMutex.Lock() - defer v.writeMutex.Unlock() - - // need to wipe the end of the current line and all following lines - if len(v.lines) > 0 && v.wy < len(v.lines) { - // why this needs to be +1 but the 0:v.wx part doesn't, I'm not sure - v.lines = v.lines[0 : v.wy+1] - - if len(v.lines[v.wy]) > 0 && v.wx < len(v.lines[v.wy]) { - v.lines[v.wy] = v.lines[v.wy][0:v.wx] - } - } + v.writeMutex.Unlock() } // clearRunes erases all the cells in the view. diff --git a/vendor/modules.txt b/vendor/modules.txt index f263b6ee6..1bf4922de 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -149,7 +149,7 @@ github.com/jesseduffield/go-git/v5/utils/merkletrie/filesystem github.com/jesseduffield/go-git/v5/utils/merkletrie/index github.com/jesseduffield/go-git/v5/utils/merkletrie/internal/frame github.com/jesseduffield/go-git/v5/utils/merkletrie/noder -# github.com/jesseduffield/gocui v0.3.1-0.20210406065942-1b0c68414064 +# github.com/jesseduffield/gocui v0.3.1-0.20210405093708-e79dab8f7772 ## explicit github.com/jesseduffield/gocui # github.com/jesseduffield/termbox-go v0.0.0-20200823212418-a2289ed6aafe -- cgit v1.2.3