summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgmont Koblinger <egmont@gmail.com>2014-05-26 13:14:44 +0200
committerEgmont Koblinger <egmont@gmail.com>2014-06-03 00:14:21 +0200
commit491a08b59b23912134732687389c63252b67f934 (patch)
tree97ef27fc7ab2993bc0e77acf33203ec1748fedd5
parent781480fe81cca3b66e02bdb9d34bbacc822f3496 (diff)
downloadvte-491a08b59b23912134732687389c63252b67f934.tar.gz
widget: Speed up scrolling in very large terminals
https://bugzilla.gnome.org/show_bug.cgi?id=730732 (cherry picked from commit b8db6a28b9b809a643268941a3bd1b0dcff70198)
-rw-r--r--src/vte.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/vte.c b/src/vte.c
index b23b2094..f6dcd99f 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