]> git.eshelyaron.com Git - emacs.git/commitdiff
(x_append_glyph, x_append_composite_glyph)
authorGerd Moellmann <gerd@gnu.org>
Wed, 5 Jul 2000 11:41:01 +0000 (11:41 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 5 Jul 2000 11:41:01 +0000 (11:41 +0000)
(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.

src/ChangeLog
src/xterm.c

index 2cbbe1c5f776a9f5845a1411e43019bb630ba028..dff4025fad2836fc99ef6b7a3cfac5af461c42ba 100644 (file)
@@ -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
index 96e3e97a3fd15a535d6d22173c5ad830332e93d6..743c7f8934d3f1ba9897eb085b76897c461f22e3 100644 (file)
@@ -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->left_box_line_p = it->start_of_box_run_p;
-      glyph->right_box_line_p = it->end_of_box_run_p;
+      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->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->left_box_line_p = it->start_of_box_run_p;
-      glyph->right_box_line_p = it->end_of_box_run_p;
+      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->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->left_box_line_p = it->start_of_box_run_p;
-         glyph->right_box_line_p = it->end_of_box_run_p;
+         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->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->left_box_line_p = it->start_of_box_run_p;
-      glyph->right_box_line_p = it->end_of_box_run_p;
+      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->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];
     }
 }