[fb] Simplify scrollback line counting

Using a start and a count was redundant when we know how many lines are
in the buffer already.
This commit is contained in:
Justin C. Miller
2021-01-06 23:20:29 -08:00
parent d1c0723b44
commit e3b9c0140a

View File

@@ -8,7 +8,6 @@
scrollback::scrollback(unsigned lines, unsigned cols, unsigned margin) : scrollback::scrollback(unsigned lines, unsigned cols, unsigned margin) :
m_rows {lines}, m_rows {lines},
m_cols {cols}, m_cols {cols},
m_start {0},
m_count {0}, m_count {0},
m_margin {margin} m_margin {margin}
{ {
@@ -23,24 +22,20 @@ scrollback::scrollback(unsigned lines, unsigned cols, unsigned margin) :
void void
scrollback::add_line(const char *line, size_t len) scrollback::add_line(const char *line, size_t len)
{ {
unsigned i = 0; unsigned i = m_count++ % m_rows;
if (m_count < m_rows)
i = m_count++;
else
i = m_start++;
if (len > m_cols) if (len > m_cols)
len = m_cols; len = m_cols;
memcpy(m_lines[i % m_rows], line, len); memcpy(m_lines[i], line, len);
if (len < m_cols) if (len < m_cols)
memset(m_lines[i % m_rows]+len, ' ', m_cols - len); memset(m_lines[i]+len, ' ', m_cols - len);
} }
char * char *
scrollback::get_line(unsigned i) scrollback::get_line(unsigned i)
{ {
return m_lines[(i+m_start)%m_rows]; return m_lines[(i+m_count)%m_rows];
} }
void void