[vte] widget: Speed up scrolling in very large terminals



commit b8db6a28b9b809a643268941a3bd1b0dcff70198
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

 src/vte.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/src/vte.c b/src/vte.c
index 297dae8..1bda1a9 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -13246,14 +13246,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;
@@ -13272,7 +13280,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]