[vte/vte-0-36] widget: Speed up scrolling in very large terminals



commit 491a08b59b23912134732687389c63252b67f934
Author: Egmont Koblinger <egmont gmail com>
Date:   Mon May 26 13:14:44 2014 +0200

    widget: Speed up scrolling in very large terminals
    
    https://bugzilla.gnome.org/show_bug.cgi?id=730732
    (cherry picked from commit b8db6a28b9b809a643268941a3bd1b0dcff70198)

 src/vte.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/src/vte.c b/src/vte.c
index b23b209..f6dcd99 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -14953,14 +14953,22 @@ update_repeat_timeout (gpointer data)
        _vte_debug_print (VTE_DEBUG_WORK, "]");
 
        /* We only stop the timer if no update request was received in this
-        * past cycle.
+         * past cycle.  Technically, always stop this timer object and maybe
+         * reinstall a new one because we need to delay by the amount of time
+         * it took to repaint the screen: bug 730732.
         */
-       again = TRUE;
        if (active_terminals == NULL) {
                _vte_debug_print(VTE_DEBUG_TIMEOUT,
                                "Stoping update timeout\n");
                update_timeout_tag = 0;
                again = FALSE;
+        } else {
+                update_timeout_tag =
+                        g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE,
+                                            VTE_UPDATE_REPEAT_TIMEOUT,
+                                            update_repeat_timeout, NULL,
+                                            NULL);
+                again = TRUE;
        }
 
        in_update_timeout = FALSE;
@@ -14977,7 +14985,7 @@ update_repeat_timeout (gpointer data)
                prune_chunks (10);
        }
 
-       return again;
+        return FALSE;  /* If we need to go again, we already have a new timer for that. */
 }
 
 static gboolean


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]