Skip to content

Commit 0482d96

Browse files
committed
[lldb] Unify window resizing logic in command line driver
Unify the logic for window resizing in the command line driver. This was prompted by the Windows bot not knowing about the ws_col field. (cherry picked from commit 8f151f0)
1 parent 894592c commit 0482d96

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

lldb/tools/driver/Driver.cpp

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -454,14 +454,8 @@ int Driver::MainLoop() {
454454
m_debugger.SetUseExternalEditor(m_option_data.m_use_external_editor);
455455
m_debugger.SetShowInlineDiagnostics(true);
456456

457-
struct winsize window_size;
458-
if ((isatty(STDIN_FILENO) != 0) &&
459-
::ioctl(STDIN_FILENO, TIOCGWINSZ, &window_size) == 0) {
460-
if (window_size.ws_col > 0)
461-
m_debugger.SetTerminalWidth(window_size.ws_col);
462-
if (window_size.ws_row > 0)
463-
m_debugger.SetTerminalHeight(window_size.ws_row);
464-
}
457+
// Set the terminal dimensions.
458+
UpdateWindowSize();
465459

466460
SBCommandInterpreter sb_interpreter = m_debugger.GetCommandInterpreter();
467461

@@ -637,21 +631,24 @@ int Driver::MainLoop() {
637631
return sb_interpreter.GetQuitStatus();
638632
}
639633

640-
void Driver::ResizeWindow(unsigned short col, unsigned short row) {
641-
GetDebugger().SetTerminalWidth(col);
642-
GetDebugger().SetTerminalHeight(row);
643-
}
644-
645-
void sigwinch_handler(int signo) {
634+
void Driver::UpdateWindowSize() {
646635
struct winsize window_size;
647636
if ((isatty(STDIN_FILENO) != 0) &&
648637
::ioctl(STDIN_FILENO, TIOCGWINSZ, &window_size) == 0) {
649-
if ((window_size.ws_col > 0) && g_driver != nullptr) {
650-
g_driver->ResizeWindow(window_size.ws_col, window_size.ws_row);
651-
}
638+
if (window_size.ws_col > 0)
639+
m_debugger.SetTerminalWidth(window_size.ws_col);
640+
#ifndef _WIN32
641+
if (window_size.ws_row > 0)
642+
m_debugger.SetTerminalHeight(window_size.ws_row);
643+
#endif
652644
}
653645
}
654646

647+
void sigwinch_handler(int signo) {
648+
if (g_driver != nullptr)
649+
g_driver->UpdateWindowSize();
650+
}
651+
655652
void sigint_handler(int signo) {
656653
#ifdef _WIN32 // Restore handler as it is not persistent on Windows
657654
signal(SIGINT, sigint_handler);

lldb/tools/driver/Driver.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class Driver : public lldb::SBBroadcaster {
9292

9393
lldb::SBDebugger &GetDebugger() { return m_debugger; }
9494

95-
void ResizeWindow(unsigned short col, unsigned short row);
95+
void UpdateWindowSize();
9696

9797
private:
9898
lldb::SBDebugger m_debugger;

0 commit comments

Comments
 (0)