diff options
author | Egmont Koblinger <egmont@gmail.com> | 2014-05-26 13:14:44 +0200 |
---|---|---|
committer | Egmont Koblinger <egmont@gmail.com> | 2014-06-03 00:14:21 +0200 |
commit | 491a08b59b23912134732687389c63252b67f934 (patch) | |
tree | 97ef27fc7ab2993bc0e77acf33203ec1748fedd5 | |
parent | 781480fe81cca3b66e02bdb9d34bbacc822f3496 (diff) | |
download | vte-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.c | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -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 |