aboutsummaryrefslogtreecommitdiffstats
path: root/src/ChangeLog
diff options
context:
space:
mode:
authorEli Zaretskii2011-10-18 18:56:09 +0200
committerEli Zaretskii2011-10-18 18:56:09 +0200
commit4787455fb7e0a33fe5420b4414a3b6e87685e45d (patch)
tree8e096ba87813b86f17f498a663e0f0865774b762 /src/ChangeLog
parent0a768890bacef10b9eb806982244044c12392dd9 (diff)
downloademacs-4787455fb7e0a33fe5420b4414a3b6e87685e45d.tar.gz
emacs-4787455fb7e0a33fe5420b4414a3b6e87685e45d.zip
Fix bug #9771 with slow redisplay in long lines full of control characters.
src/bidi.c (bidi_line_init): Initialize next_en_pos to zero, not -1. (bidi_resolve_neutral): Don't enter the expensive loop looking for non-neutral characters if the current character is a paragraph separator (a.k.a. Newline). This avoids running the same expensive loop twice, once when we consume the preceding newline and the other time when the line actually needs to be displayed. Avoid the loop when we see neutrals on the base embedding level following a character whose directionality is the same as the paragraph's. This avoids running the expensive loop when a line ends in a long sequence of neutrals, like control characters. Add assertion against STRONG_AL type. Slightly rearrange code that determines the type of a neutral given the first non-neutral that follows it. (bidi_level_of_next_char): Set next_en_pos to zero when invalidating its info.
Diffstat (limited to 'src/ChangeLog')
-rw-r--r--src/ChangeLog19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 07b0418b399..d21e6383764 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,22 @@
12011-10-18 Eli Zaretskii <eliz@gnu.org>
2
3 Fix part 3 of bug#9771.
4 * bidi.c (bidi_line_init): Initialize next_en_pos to zero, not -1.
5 (bidi_resolve_neutral): Don't enter the expensive loop looking for
6 non-neutral characters if the current character is a paragraph
7 separator (a.k.a. Newline). This avoids running the same
8 expensive loop twice, once when we consume the preceding newline
9 and the other time when the line actually needs to be displayed.
10 Avoid the loop when we see neutrals on the base embedding level
11 following a character whose directionality is the same as the
12 paragraph's. This avoids running the expensive loop when a line
13 ends in a long sequence of neutrals, like control characters.
14 Add assertion against STRONG_AL type. Slightly rearrange code
15 that determines the type of a neutral given the first non-neutral
16 that follows it.
17 (bidi_level_of_next_char): Set next_en_pos to zero when
18 invalidating its info.
19
12011-10-17 Eli Zaretskii <eliz@gnu.org> 202011-10-17 Eli Zaretskii <eliz@gnu.org>
2 21
3 * xdisp.c (push_display_prop): Determine whether to record string 22 * xdisp.c (push_display_prop): Determine whether to record string