aboutsummaryrefslogtreecommitdiff
path: root/widgets/terminal.go
AgeCommit message (Collapse)Author
2019-04-27lib/ui: introduce InvalidatableSimon Ser
Many Drawable implementations have their own Invalidate and OnInvalidate functions, with an unexported onInvalidate field. However OnInvalidate and Invalidate are usually not called in the same goroutine. This results in a race on this field, e.g.: Read at 0x00c000094748 by goroutine 7: git.sr.ht/~sircmpwn/aerc2/widgets.NewDirectoryList.func1() /home/simon/src/aerc2/widgets/dirlist.go:85 +0x56 git.sr.ht/~sircmpwn/aerc2/widgets.(*Spinner).Start.func1() /home/simon/src/aerc2/widgets/spinner.go:93 +0x1bb Previous write at 0x00c000094748 by main goroutine: [failed to restore the stack] Goroutine 7 (running) created at: git.sr.ht/~sircmpwn/aerc2/widgets.(*Spinner).Start() /home/simon/src/aerc2/widgets/spinner.go:46 +0x8f git.sr.ht/~sircmpwn/aerc2/widgets.NewDirectoryList() /home/simon/src/aerc2/widgets/dirlist.go:37 +0x286 git.sr.ht/~sircmpwn/aerc2/widgets.NewAccountView() /home/simon/src/aerc2/widgets/account.go:50 +0x5ca git.sr.ht/~sircmpwn/aerc2/widgets.NewAerc() /home/simon/src/aerc2/widgets/aerc.go:60 +0x800 main.main() /home/simon/src/aerc2/aerc.go:65 +0x33e To fix this, introduce a new type, Invalidatable, which protects the field. Unfortunately the Drawable must be passed to the callback function in Invalidate, so we still need to re-implement this in each Invalidatable user.
2019-04-15Re-render terminal on invalidateDrew DeVault
2019-04-05Clear damage on each terminal.Draw callDrew DeVault
2019-04-05Fix wrong row due to typoTom Lebreux
Signed-off-by: Tom Lebreux <tomlebreux@cock.li>
2019-03-30Fix crash on command not foundDrew DeVault
2019-03-30Implement :pipeDrew DeVault
2019-03-21Expire status errors on inputDrew DeVault
2019-03-21term: don't mess with cursor when unfocusedDrew DeVault
2019-03-21Enable alt screen on built-in terminalDrew DeVault
2019-03-21Make terminal closure thread safeDrew DeVault
2019-03-21Use GetCursorPos instead of stored positionDrew DeVault
2019-03-21Skip writes if term is closedDrew DeVault
2019-03-21Improve cursor handling in embedded terminalDrew DeVault
2019-03-21Fix cursor handling in embedded terminalDrew DeVault
2019-03-21Forward key events to child terminalDrew DeVault
2019-03-17moar colorsDrew DeVault
2019-03-17s/:term-close/:close/gDrew DeVault
2019-03-17Wrap Terminal in TermHostDrew DeVault
2019-03-17Add :term-closeDrew DeVault
2019-03-17Handle terminal title, login shellDrew DeVault
2019-03-17Fix terminal colors; wait until tty size is knownDrew DeVault
2019-03-17Add basic terminal widgetDrew DeVault