mirror of
https://github.com/rivo/tview.git
synced 2026-04-26 21:35:54 +03:00
[GH-ISSUE #738] Application lock on tview.Application.QueueEvent #543
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/tview#543
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @bhbosman on GitHub (Jun 28, 2022).
Original GitHub issue: https://github.com/rivo/tview/issues/738
Hi,
First, thank you for publishing and maintaining this source code. I am using this on a console application and recently I connect this up to the golang SSH server implementation to run a ssh Channel terminal application, using
tcellandtview.My environment is as follows:
tcellTerminal Screentview.Applicationand Widgets to ittview.Application.QueueUpdate()andtview.Application.QueueUpdateDraw()methodstview.Application.Runexit, with no issues, and I start my SSH Channel unwinding process.After further investigation, I realized, that my SSH Channel unwinding fail as it is stuck in a
tview.Application.QueueUpdate().tview.Application.QueueUpdate()only returns when thequeuedUpdatemessage has been processed and itsdonechannel received a message. Withtview.Application.Run()exited(correctly), there is no reading of theapplication.updateschannel, which leaves me in a stale state.A quick test case can show this.
screenis an emptytcell.Screenimplementation`
`
I would appreciate any feedback on this.
Regards
Brendan Bosman
@bhbosman commented on GitHub (Jun 29, 2022):
Hi
Created a pull request that will resolve this issue https://github.com/rivo/tview/pull/739
@rivo commented on GitHub (Nov 12, 2022):
Your example uses
screen{}which is not declared anywhere. But even with this line removed, the goroutine where you schedule the update is invoked after the application has already exited so of course, none of it executes.I tried looking into your PR but it introduces a whole lot of other things, like contexts, new functions, and checks. Looks like quite a complex addition to the
Applicationsclass. (It's already a complex class so I'm very cautious adding more complexity to it.)If you post a full, working, and brief code example that reproduces the issue, I will have another look.