diff --git a/tools/tui/loop/api.go b/tools/tui/loop/api.go index 87af9628d..a62580439 100644 --- a/tools/tui/loop/api.go +++ b/tools/tui/loop/api.go @@ -78,6 +78,9 @@ type Loop struct { // Called when resuming from a SIGTSTP or Ctrl-z OnResumeFromStop func() error + + // Called when main loop is woken up + OnWakeup func() error } func New(options ...func(self *Loop)) (*Loop, error) { diff --git a/tools/tui/loop/run.go b/tools/tui/loop/run.go index 0a3c8e70a..ae336b827 100644 --- a/tools/tui/loop/run.go +++ b/tools/tui/loop/run.go @@ -319,6 +319,12 @@ func (self *Loop) run() (err error) { for len(self.wakeup_channel) > 0 { <-self.wakeup_channel } + if self.OnWakeup != nil { + err = self.OnWakeup() + if err != nil { + return err + } + } case msg_id := <-write_done_channel: self.flush_pending_writes(tty_write_channel) if self.OnWriteComplete != nil {