summaryrefslogtreecommitdiff
path: root/src/dispextern.h
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2011-10-20 14:39:52 +0200
committerEli Zaretskii <eliz@gnu.org>2011-10-20 14:39:52 +0200
commit7b5d6677eca241b608f32b1de8d60e03758ec157 (patch)
treeacb4c67188e9ca5e819c44350a3907812638a904 /src/dispextern.h
parent1ebc9c872623dab285842f273a18937223f4d3c6 (diff)
Improve the speedup of bidi display introduced in 2011-10-18T16:56:09Z!eliz@gnu.org for bug#9771.
src/dispextern.h (struct bidi_it): New member next_en_type. src/bidi.c (bidi_line_init): Initialize the next_en_type member. (bidi_resolve_explicit_1): When next_en_pos is valid for the current character, check also for next_en_type being WEAK_EN. (bidi_resolve_weak): Don't enter the expensive loop if the current position is before next_en_pos. Record the bidi type of the first non-ET, non-BN character we find, in addition to its position. (bidi_level_of_next_char): Invalidate next_en_type when next_en_pos is over-stepped.
Diffstat (limited to 'src/dispextern.h')
-rw-r--r--src/dispextern.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dispextern.h b/src/dispextern.h
index 3c157371ef..dd5f67d2d1 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1856,7 +1856,8 @@ struct bidi_it {
struct bidi_saved_info next_for_neutral; /* surrounding characters for... */
struct bidi_saved_info prev_for_neutral; /* ...resolving neutrals */
struct bidi_saved_info next_for_ws; /* character after sequence of ws */
- EMACS_INT next_en_pos; /* position of next EN char for ET */
+ EMACS_INT next_en_pos; /* pos. of next char for determining ET type */
+ bidi_type_t next_en_type; /* type of char at next_en_pos */
EMACS_INT ignore_bn_limit; /* position until which to ignore BNs */
bidi_dir_t sor; /* direction of start-of-run in effect */
int scan_dir; /* direction of text scan, 1: forw, -1: back */