[tor-commits] [nyx/master] Voluminous content slowed interpreter panel

atagar at torproject.org atagar at torproject.org
Thu Jan 3 22:44:02 UTC 2019


commit 6492a3a1676b3795d9179ff875fb879fe1383688
Author: Damian Johnson <atagar at torproject.org>
Date:   Thu Jan 3 14:40:25 2019 -0800

    Voluminous content slowed interpreter panel
    
    Each refresh of our interpreter panel iterated over every line of its content,
    regardless of if it was visible or not. This is silly. Limiting the range the
    draw function consults to only what's visible.
    
    Caught thanks to wagon...
    
      https://trac.torproject.org/projects/tor/ticket/28902
---
 nyx/panel/interpreter.py | 14 +++++++++-----
 web/changelog/index.html |  6 ++++++
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/nyx/panel/interpreter.py b/nyx/panel/interpreter.py
index aa57d29..0a4209d 100644
--- a/nyx/panel/interpreter.py
+++ b/nyx/panel/interpreter.py
@@ -130,9 +130,13 @@ class InterpreterPanel(nyx.panel.Panel):
       self._x_offset = 2
       subwindow.scrollbar(1, scroll, len(self._lines) + 1)
 
-    for i, line in enumerate(self._lines + [prompt]):
-      x, y = self._x_offset, i + 1 - scroll
+    visible_lines = self._lines[scroll:scroll + subwindow.height - 1]
 
-      if y > 0:
-        for text, attr in line:
-          x = subwindow.addstr(x, y, text, *attr)
+    if len(visible_lines) < subwindow.height - 1:
+      visible_lines.append(prompt)
+
+    for y, line in enumerate(visible_lines):
+      x = self._x_offset
+
+      for text, attr in line:
+        x = subwindow.addstr(x, y + 1, text, *attr)
diff --git a/web/changelog/index.html b/web/changelog/index.html
index 0bbc01a..8041655 100644
--- a/web/changelog/index.html
+++ b/web/changelog/index.html
@@ -112,6 +112,12 @@
           </ul>
         </li>
 
+        <li><span class="component">Interpreter</span>
+          <ul>
+            <li>Large amounts of content made panel sluggish (<b><a href="https://trac.torproject.org/projects/tor/ticket/28902">ticket</a></b>)</li>
+          </ul>
+        </li>
+
         <li><span class="component">Curses</span>
           <ul>
             <li>Resizing could crash the interface (<b><a href="https://trac.torproject.org/projects/tor/ticket/24382">ticket</a></b>)</li>



More information about the tor-commits mailing list