Skip to content

Commit

Permalink
Merge pull request #627 from imwints/lldb-term-size
Browse files Browse the repository at this point in the history
  • Loading branch information
aristocratos committed Jan 3, 2024
2 parents a29545c + ef788ef commit 32b6622
Showing 1 changed file with 23 additions and 7 deletions.
30 changes: 23 additions & 7 deletions src/btop_tools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ tab-size = 4
#include <utility>
#include <ranges>

#include <unistd.h>
#include <termios.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <termios.h>
#include <unistd.h>

#include "unordered_map"
#include "widechar_width.hpp"
Expand Down Expand Up @@ -85,12 +86,27 @@ namespace Term {
}

bool refresh(bool only_check) {
struct winsize w;
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &w) < 0) return false;
if (width != w.ws_col or height != w.ws_row) {
// Query dimensions of '/dev/tty' of the 'STDOUT_FILENO' isn't avaiable.
// This variable is set in those cases to avoid calls to ioctl
constinit static bool uses_dev_tty = false;
struct winsize wsize {};
if (uses_dev_tty || ioctl(STDOUT_FILENO, TIOCGWINSZ, &wsize) < 0 || (wsize.ws_col == 0 && wsize.ws_row == 0)) {
Logger::error(R"(Couldn't determine terminal size of "STDOUT_FILENO"!)");
auto dev_tty = open("/dev/tty", O_RDONLY);
if (dev_tty != -1) {
ioctl(dev_tty, TIOCGWINSZ, &wsize);
close(dev_tty);
}
else {
Logger::error(R"(Couldn't determine terminal size of "/dev/tty"!)");
return false;
}
uses_dev_tty = true;
}
if (width != wsize.ws_col or height != wsize.ws_row) {
if (not only_check) {
width = w.ws_col;
height = w.ws_row;
width = wsize.ws_col;
height = wsize.ws_row;
}
return true;
}
Expand Down

0 comments on commit 32b6622

Please sign in to comment.