[lldb/Driver] Support terminal resizing #1217
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary:
The comment in the Editine.h header made it sound like editline was
just unable to handle terminal resizing. We were not ever telling
editline that the terminal had changed size, which might explain why
it wasn't working.
This patch threads a
TerminalSizeChanged()
callback through theIOHandler and invokes it from the SIGWINCH handler in the driver. Our
Editline
class already had aTerminalSizeChanged()
method whichwas invoked only when editline was configured.
This patch also changes
Editline
to not apply the changes right awayin
TerminalSizeChanged()
, but instead defer that to the nextcharacter read. During my testing, it happened once that the signal
was received while our
ConnectionFileDescriptor::Read
was allocatingmemory. As
el_resize
seems to allocate memory too, this crashed.Reviewers: labath, teemperor
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D79654
(cherry picked from commit d9166ad)