[Lldb-commits] [lldb] 8f151f0 - [lldb] Unify window resizing logic in command line driver

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Mon Dec 16 12:22:31 PST 2024


Author: Jonas Devlieghere
Date: 2024-12-16T12:22:25-08:00
New Revision: 8f151f0f559c4881a0d206124c64226a82d44a79

URL: https://github.com/llvm/llvm-project/commit/8f151f0f559c4881a0d206124c64226a82d44a79
DIFF: https://github.com/llvm/llvm-project/commit/8f151f0f559c4881a0d206124c64226a82d44a79.diff

LOG: [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.

Added: 
    

Modified: 
    lldb/tools/driver/Driver.cpp
    lldb/tools/driver/Driver.h

Removed: 
    


################################################################################
diff  --git a/lldb/tools/driver/Driver.cpp b/lldb/tools/driver/Driver.cpp
index 771663eb7bf0af..15cb0134fec8e0 100644
--- a/lldb/tools/driver/Driver.cpp
+++ b/lldb/tools/driver/Driver.cpp
@@ -446,14 +446,8 @@ int Driver::MainLoop() {
   m_debugger.SetUseExternalEditor(m_option_data.m_use_external_editor);
   m_debugger.SetShowInlineDiagnostics(true);
 
-  struct winsize window_size;
-  if ((isatty(STDIN_FILENO) != 0) &&
-      ::ioctl(STDIN_FILENO, TIOCGWINSZ, &window_size) == 0) {
-    if (window_size.ws_col > 0)
-      m_debugger.SetTerminalWidth(window_size.ws_col);
-    if (window_size.ws_row > 0)
-      m_debugger.SetTerminalHeight(window_size.ws_row);
-  }
+  // Set the terminal dimensions.
+  UpdateWindowSize();
 
   SBCommandInterpreter sb_interpreter = m_debugger.GetCommandInterpreter();
 
@@ -629,21 +623,24 @@ int Driver::MainLoop() {
   return sb_interpreter.GetQuitStatus();
 }
 
-void Driver::ResizeWindow(unsigned short col, unsigned short row) {
-  GetDebugger().SetTerminalWidth(col);
-  GetDebugger().SetTerminalHeight(row);
-}
-
-void sigwinch_handler(int signo) {
+void Driver::UpdateWindowSize() {
   struct winsize window_size;
   if ((isatty(STDIN_FILENO) != 0) &&
       ::ioctl(STDIN_FILENO, TIOCGWINSZ, &window_size) == 0) {
-    if ((window_size.ws_col > 0) && g_driver != nullptr) {
-      g_driver->ResizeWindow(window_size.ws_col, window_size.ws_row);
-    }
+    if (window_size.ws_col > 0)
+      m_debugger.SetTerminalWidth(window_size.ws_col);
+#ifndef _WIN32
+    if (window_size.ws_row > 0)
+      m_debugger.SetTerminalHeight(window_size.ws_row);
+#endif
   }
 }
 
+void sigwinch_handler(int signo) {
+  if (g_driver != nullptr)
+    g_driver->UpdateWindowSize();
+}
+
 void sigint_handler(int signo) {
 #ifdef _WIN32 // Restore handler as it is not persistent on Windows
   signal(SIGINT, sigint_handler);

diff  --git a/lldb/tools/driver/Driver.h b/lldb/tools/driver/Driver.h
index ed400ca43575d4..eb268480361d96 100644
--- a/lldb/tools/driver/Driver.h
+++ b/lldb/tools/driver/Driver.h
@@ -92,7 +92,7 @@ class Driver : public lldb::SBBroadcaster {
 
   lldb::SBDebugger &GetDebugger() { return m_debugger; }
 
-  void ResizeWindow(unsigned short col, unsigned short row);
+  void UpdateWindowSize();
 
 private:
   lldb::SBDebugger m_debugger;


        


More information about the lldb-commits mailing list