mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-19 10:22:27 +00:00
(x_append_glyph, x_append_composite_glyph)
(x_produce_image_glyph, x_append_stretch_glyph): Accomodate to changes in struct glyph starting 1999-12-27. Some bit-fields of struct glyph were not set, which made glyphs unequal when compared with GLYPH_EQUAL_P. Redisplay outputs such glyphs, and flickering effects were the result. This also depended on the contents of memory returned by xmalloc. If flickering happens again, activate the code in clear_glyph_row that's in #if 0. If the flickering is gone with that, chances are that it is caused by something similar.
This commit is contained in:
parent
45560b1ad4
commit
88d757306e
@ -1,3 +1,26 @@
|
||||
2000-07-05 Gerd Moellmann <gerd@gnu.org>
|
||||
|
||||
* xterm.c (x_append_glyph, x_append_composite_glyph)
|
||||
(x_produce_image_glyph, x_append_stretch_glyph): Accomodate to
|
||||
changes in struct glyph starting 1999-12-27. Some bit-fields of
|
||||
struct glyph were not set, which made glyphs unequal when compared
|
||||
with GLYPH_EQUAL_P. Redisplay outputs such glyphs, and flickering
|
||||
effects were the result. This also depended on the contents of
|
||||
memory returned by xmalloc. If flickering happens again, activate
|
||||
the code in clear_glyph_row that's in #if 0. If the flickering is
|
||||
gone with that, chances are that it is caused by something
|
||||
similar.
|
||||
|
||||
* dispnew.c (clear_glyph_row): Add debug code in #if 0.
|
||||
|
||||
* dispextern.h: Add some comments.
|
||||
|
||||
* window.c (add_window_to_list): Add parameter LIST.
|
||||
(window_list): Order list so that, for each frame, windows are
|
||||
in canonical order, and so that frames appear in the list in
|
||||
the order given by Vframe_list.
|
||||
(next_window): Reverse the handling of NEXT_P.
|
||||
|
||||
2000-07-04 Andrew Innes <andrewi@gnu.org>
|
||||
|
||||
* alloca.c [emacs]: Include lisp.h (needed by atimer.h included
|
||||
|
69
src/xterm.c
69
src/xterm.c
@ -1387,24 +1387,20 @@ x_append_glyph (it)
|
||||
glyph = it->glyph_row->glyphs[area] + it->glyph_row->used[area];
|
||||
if (glyph < it->glyph_row->glyphs[area + 1])
|
||||
{
|
||||
/* Play it safe. If sub-structures of the glyph are not all the
|
||||
same size, it otherwise be that some bits stay set. This
|
||||
would prevent a comparison with GLYPH_EQUAL_P. */
|
||||
glyph->u.val = 0;
|
||||
|
||||
glyph->type = CHAR_GLYPH;
|
||||
glyph->pixel_width = it->pixel_width;
|
||||
glyph->u.ch = it->char_to_display;
|
||||
glyph->face_id = it->face_id;
|
||||
glyph->charpos = CHARPOS (it->position);
|
||||
glyph->object = it->object;
|
||||
glyph->pixel_width = it->pixel_width;
|
||||
glyph->voffset = it->voffset;
|
||||
glyph->type = CHAR_GLYPH;
|
||||
glyph->multibyte_p = it->multibyte_p;
|
||||
glyph->left_box_line_p = it->start_of_box_run_p;
|
||||
glyph->right_box_line_p = it->end_of_box_run_p;
|
||||
glyph->voffset = it->voffset;
|
||||
glyph->multibyte_p = it->multibyte_p;
|
||||
glyph->overlaps_vertically_p = (it->phys_ascent > it->ascent
|
||||
|| it->phys_descent > it->descent);
|
||||
glyph->padding_p = 0;
|
||||
glyph->glyph_not_available_p = it->glyph_not_available_p;
|
||||
glyph->face_id = it->face_id;
|
||||
glyph->u.ch = it->char_to_display;
|
||||
++it->glyph_row->used[area];
|
||||
}
|
||||
}
|
||||
@ -1424,23 +1420,20 @@ x_append_composite_glyph (it)
|
||||
glyph = it->glyph_row->glyphs[area] + it->glyph_row->used[area];
|
||||
if (glyph < it->glyph_row->glyphs[area + 1])
|
||||
{
|
||||
/* Play it safe. If sub-structures of the glyph are not all the
|
||||
same size, it otherwise be that some bits stay set. This
|
||||
would prevent a comparison with GLYPH_EQUAL_P. */
|
||||
glyph->u.val = 0;
|
||||
|
||||
glyph->type = COMPOSITE_GLYPH;
|
||||
glyph->pixel_width = it->pixel_width;
|
||||
glyph->u.cmp_id = it->cmp_id;
|
||||
glyph->face_id = it->face_id;
|
||||
glyph->charpos = CHARPOS (it->position);
|
||||
glyph->object = it->object;
|
||||
glyph->pixel_width = it->pixel_width;
|
||||
glyph->voffset = it->voffset;
|
||||
glyph->type = COMPOSITE_GLYPH;
|
||||
glyph->multibyte_p = it->multibyte_p;
|
||||
glyph->left_box_line_p = it->start_of_box_run_p;
|
||||
glyph->right_box_line_p = it->end_of_box_run_p;
|
||||
glyph->voffset = it->voffset;
|
||||
glyph->multibyte_p = it->multibyte_p;
|
||||
glyph->overlaps_vertically_p = (it->phys_ascent > it->ascent
|
||||
|| it->phys_descent > it->descent);
|
||||
glyph->padding_p = 0;
|
||||
glyph->glyph_not_available_p = 0;
|
||||
glyph->face_id = it->face_id;
|
||||
glyph->u.cmp_id = it->cmp_id;
|
||||
++it->glyph_row->used[area];
|
||||
}
|
||||
}
|
||||
@ -1515,16 +1508,19 @@ x_produce_image_glyph (it)
|
||||
glyph = it->glyph_row->glyphs[area] + it->glyph_row->used[area];
|
||||
if (glyph < it->glyph_row->glyphs[area + 1])
|
||||
{
|
||||
glyph->type = IMAGE_GLYPH;
|
||||
glyph->u.img_id = img->id;
|
||||
glyph->face_id = it->face_id;
|
||||
glyph->pixel_width = it->pixel_width;
|
||||
glyph->charpos = CHARPOS (it->position);
|
||||
glyph->object = it->object;
|
||||
glyph->pixel_width = it->pixel_width;
|
||||
glyph->voffset = it->voffset;
|
||||
glyph->type = IMAGE_GLYPH;
|
||||
glyph->multibyte_p = it->multibyte_p;
|
||||
glyph->left_box_line_p = it->start_of_box_run_p;
|
||||
glyph->right_box_line_p = it->end_of_box_run_p;
|
||||
glyph->voffset = it->voffset;
|
||||
glyph->multibyte_p = it->multibyte_p;
|
||||
glyph->overlaps_vertically_p = 0;
|
||||
glyph->padding_p = 0;
|
||||
glyph->glyph_not_available_p = 0;
|
||||
glyph->face_id = it->face_id;
|
||||
glyph->u.img_id = img->id;
|
||||
++it->glyph_row->used[area];
|
||||
}
|
||||
}
|
||||
@ -1551,17 +1547,20 @@ x_append_stretch_glyph (it, object, width, height, ascent)
|
||||
glyph = it->glyph_row->glyphs[area] + it->glyph_row->used[area];
|
||||
if (glyph < it->glyph_row->glyphs[area + 1])
|
||||
{
|
||||
glyph->type = STRETCH_GLYPH;
|
||||
glyph->u.stretch.ascent = height * ascent;
|
||||
glyph->u.stretch.height = height;
|
||||
glyph->face_id = it->face_id;
|
||||
glyph->pixel_width = width;
|
||||
glyph->charpos = CHARPOS (it->position);
|
||||
glyph->object = object;
|
||||
glyph->pixel_width = width;
|
||||
glyph->voffset = it->voffset;
|
||||
glyph->type = STRETCH_GLYPH;
|
||||
glyph->multibyte_p = it->multibyte_p;
|
||||
glyph->left_box_line_p = it->start_of_box_run_p;
|
||||
glyph->right_box_line_p = it->end_of_box_run_p;
|
||||
glyph->voffset = it->voffset;
|
||||
glyph->multibyte_p = it->multibyte_p;
|
||||
glyph->overlaps_vertically_p = 0;
|
||||
glyph->padding_p = 0;
|
||||
glyph->glyph_not_available_p = 0;
|
||||
glyph->face_id = it->face_id;
|
||||
glyph->u.stretch.ascent = height * ascent;
|
||||
glyph->u.stretch.height = height;
|
||||
++it->glyph_row->used[area];
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user