XEmacs 21.2.29 "Hestia".
[chise/xemacs-chise.git.1] / src / redisplay-output.c
index 06b78b3..4d5fe0c 100644 (file)
@@ -47,16 +47,16 @@ static void redraw_cursor_in_window (struct window *w,
                                     int run_end_begin_glyphs);
 static void redisplay_output_display_block (struct window *w, struct display_line *dl,
                                            int block, int start, int end, int start_pixpos,
-                                           int cursor_start, int cursor_width, 
+                                           int cursor_start, int cursor_width,
                                            int cursor_height);
-static void redisplay_normalize_display_box (struct display_box* dest, 
+static void redisplay_normalize_display_box (struct display_box* dest,
                                             struct display_glyph_area* src);
 static int redisplay_display_boxes_in_window_p (struct window* w,
                                                struct display_box* db,
                                                struct display_glyph_area* dga);
-static void redisplay_clear_clipped_region (Lisp_Object locale, face_index findex, 
-                                           struct display_box* dest, 
-                                           struct display_glyph_area* glyphsrc, 
+static void redisplay_clear_clipped_region (Lisp_Object locale, face_index findex,
+                                           struct display_box* dest,
+                                           struct display_glyph_area* glyphsrc,
                                            int fullheight_p, Lisp_Object);
 
 /*****************************************************************************
@@ -190,6 +190,27 @@ compare_runes (struct window *w, struct rune *crb, struct rune *drb)
   /* Do not compare the values of bufpos and endpos.  They do not
      affect the display characteristics. */
 
+  /* Note: (hanoi 6) spends 95% of its time in redisplay, and about
+     30% here. Not using bitfields for rune.type alone gives a redisplay
+     speed up of 10%.
+
+     #### In profile arcs run of a normal Gnus session this function
+     is run 6.76 million times, only to return 1 in 6.73 million of
+     those.
+
+     In addition a quick look GCC sparc assembly shows that GCC is not
+     doing a good job here.
+     1. The function is not inlined (too complicated?)
+     2. It seems to be reloading the crb and drb variables all the
+     time.
+     3. It doesn't seem to notice that the second half of these if's
+     are really a switch statement.
+
+     So I (JV) conjecture
+
+     #### It would really be worth it to arrange for this function to
+     be (almost) a single call to memcmp. */
+
   if ((crb->findex != drb->findex) ||
       (WINDOW_FACE_CACHEL_DIRTY (w, drb->findex)))
     return 0;
@@ -208,7 +229,7 @@ compare_runes (struct window *w, struct rune *crb, struct rune *drb)
           (crb->object.hline.thickness != drb->object.hline.thickness ||
            crb->object.hline.yoffset != drb->object.hline.yoffset))
     return 0;
-  else if (crb->type == RUNE_DGLYPH && 
+  else if (crb->type == RUNE_DGLYPH &&
           (!EQ (crb->object.dglyph.glyph, drb->object.dglyph.glyph) ||
            !EQ (crb->object.dglyph.extent, drb->object.dglyph.extent) ||
            crb->object.dglyph.xoffset != drb->object.dglyph.xoffset))
@@ -223,7 +244,7 @@ compare_runes (struct window *w, struct rune *crb, struct rune *drb)
         up-to-date. */
       if (GLYPH_CACHEL_DIRTYP (w, gindex))
        return 0;
-      else 
+      else
        return 1;
     }
   else
@@ -636,7 +657,7 @@ output_display_line (struct window *w, display_line_dynarr *cdla,
                  if (x < ddl->bounds.left_in)
                    {
                      findex = ddl->left_margin_findex ?
-                       ddl->left_margin_findex 
+                       ddl->left_margin_findex
                        : get_builtin_face_cache_index (w, Vleft_margin_face);
                    }
                  else if (x < ddl->bounds.right_in)
@@ -647,7 +668,7 @@ output_display_line (struct window *w, display_line_dynarr *cdla,
                  else if (x < ddl->bounds.right_out)
                    {
                      findex = ddl->right_margin_findex ?
-                       ddl->right_margin_findex 
+                       ddl->right_margin_findex
                        : get_builtin_face_cache_index (w, Vright_margin_face);
                    }
                  else
@@ -691,10 +712,10 @@ output_display_line (struct window *w, display_line_dynarr *cdla,
             region or if it was a block of a different type, then
             output the entire ddb.  Otherwise, compare cdb and
             ddb and output only the changed region. */
-         if (!force && cdb && ddb->type == cdb->type 
+         if (!force && cdb && ddb->type == cdb->type
              /* If there was no buffer being display before the
                  compare anyway as we might be outputting a gutter. */
-             && 
+             &&
              (b == old_b || !old_b))
            {
              must_sync |= compare_display_blocks (w, cdl, ddl, old_block,
@@ -733,7 +754,7 @@ output_display_line (struct window *w, display_line_dynarr *cdla,
                                              cursor_start, cursor_width,
                                              cursor_height);
            }
-         
+
          start_pixpos = next_start_pixpos;
        }
     }
@@ -757,7 +778,7 @@ output_display_line (struct window *w, display_line_dynarr *cdla,
              y -= MODELINE_SHADOW_THICKNESS (w);
              height += (2 * MODELINE_SHADOW_THICKNESS (w));
            }
-         
+
          if (window_is_leftmost (w))
            clear_left_border (w, y, height);
          if (window_is_rightmost (w))
@@ -903,7 +924,7 @@ redisplay_move_cursor (struct window *w, Bufpos new_point, int no_output_end)
            }
        }
 
-      while ((up ? (cur_dl < Dynarr_length (cla)) : (cur_dl >= 0)))
+      while (up ? (cur_dl < Dynarr_length (cla)) : (cur_dl >= 0))
        {
          dl = Dynarr_atp (cla, cur_dl);
          db = get_display_block_from_line (dl, TEXT);
@@ -1091,7 +1112,7 @@ static void redisplay_unmap_subwindows (struct frame* f, int x, int y, int width
          cachel->x + cachel->width > x && cachel->x < x + width
          &&
          cachel->y + cachel->height > y && cachel->y < y + height
-         && 
+         &&
          !EQ (cachel->subwindow, ignored_window))
        {
          unmap_subwindow (cachel->subwindow);
@@ -1113,7 +1134,7 @@ void redisplay_unmap_subwindows_maybe (struct frame* f, int x, int y, int width,
     }
 }
 
-static void redisplay_unmap_subwindows_except_us (struct frame* f, int x, int y, int width, 
+static void redisplay_unmap_subwindows_except_us (struct frame* f, int x, int y, int width,
                                                  int height, Lisp_Object subwindow)
 {
   if (Dynarr_length (FRAME_SUBWINDOW_CACHE (f)))
@@ -1130,18 +1151,23 @@ static void redisplay_unmap_subwindows_except_us (struct frame* f, int x, int y,
  pixmaps, backgrounds etc.
  ****************************************************************************/
 void
-redisplay_output_subwindow (struct window *w, 
+redisplay_output_subwindow (struct window *w,
                            Lisp_Object image_instance,
                            struct display_box* db, struct display_glyph_area* dga,
                            face_index findex, int cursor_start, int cursor_width,
                            int cursor_height)
 {
-  struct Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
+  Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
   Lisp_Object window;
   struct display_glyph_area sdga;
 
-  dga->height = IMAGE_INSTANCE_SUBWINDOW_HEIGHT (p);
-  dga->width = IMAGE_INSTANCE_SUBWINDOW_WIDTH (p);
+  dga->height = IMAGE_INSTANCE_HEIGHT (p);
+  dga->width = IMAGE_INSTANCE_WIDTH (p);
+
+  /* The first thing we are going to do is update the display
+     characteristics of the subwindow. This also clears the dirty
+     flags as a side effect. */
+  update_subwindow (image_instance);
 
   /* This makes the glyph area fit into the display area. */
   if (!redisplay_normalize_glyph_area (db, dga))
@@ -1166,9 +1192,9 @@ redisplay_output_subwindow (struct window *w,
      cases.*/
   sdga.xoffset = -dga->xoffset;
   sdga.yoffset = -dga->yoffset;
-  sdga.height = IMAGE_INSTANCE_SUBWINDOW_HEIGHT (p);
-  sdga.width = IMAGE_INSTANCE_SUBWINDOW_WIDTH (p);
-  
+  sdga.height = IMAGE_INSTANCE_HEIGHT (p);
+  sdga.width = IMAGE_INSTANCE_WIDTH (p);
+
   if (redisplay_display_boxes_in_window_p (w, db, &sdga) < 0)
     {
       map_subwindow (image_instance, db->xpos, db->ypos, dga);
@@ -1176,7 +1202,7 @@ redisplay_output_subwindow (struct window *w,
   else
     {
       sdga.xoffset = sdga.yoffset = 0;
-      map_subwindow (image_instance, db->xpos - dga->xoffset, 
+      map_subwindow (image_instance, db->xpos - dga->xoffset,
                     db->ypos - dga->yoffset, &sdga);
     }
 }
@@ -1185,15 +1211,33 @@ redisplay_output_subwindow (struct window *w,
  redisplay_output_layout
 
  Output a widget hierarchy. This can safely call itself recursively.
+
+ The complexity of outputting layouts is deciding whether to do it or
+ not. Consider a layout enclosing some text, the text changes and is
+ marked as dirty, but the enclosing layout has not been marked as
+ dirty so no updates occur and the text will potentially be truncated.
+ Alternatively we hold a back pointer in the image instance to the
+ parent and mark the parent as dirty. But the layout code assumes that
+ if the layout is dirty then the whole layout should be redisplayed,
+ so we then get lots of flashing even though only the text has changed
+ size. Of course if the text shrinks in size then we do actually need
+ to redisplay the layout to repaint the exposed area. So what happens
+ if we make a non-structural change like changing color? Either we
+ redisplay everything, or we redisplay nothing. These are exactly the
+ issues lwlib has to grapple with. We really need to know what has
+ actually changed and make a layout decision based on that. We also
+ really need to know what has changed so that we can only make the
+ neccessary changes in update_subwindow.  This has all now been
+ implemented, Viva la revolution!
  ****************************************************************************/
 void
-redisplay_output_layout (struct window *w, 
+redisplay_output_layout (struct window *w,
                         Lisp_Object image_instance,
                         struct display_box* db, struct display_glyph_area* dga,
                         face_index findex, int cursor_start, int cursor_width,
                         int cursor_height)
 {
-  struct Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
+  Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
   Lisp_Object window, rest;
   Emchar_dynarr *buf = Dynarr_new (Emchar);
   struct frame *f = XFRAME (w->frame);
@@ -1201,20 +1245,20 @@ redisplay_output_layout (struct window *w,
   int layout_height, layout_width;
   /* We bogusly don't take f->extents_changed and f->glyphs_changed
      into account. This is because if we do we always redisplay the
-     entire layout. So far I have seen no ill effects to we'll see. */
-  int frame_changed = (f->buffers_changed ||
-                      f->clip_changed ||
-                      f->faces_changed    ||
-                      f->frame_changed    ||
-                      f->modeline_changed ||
-                      f->subwindows_changed ||
-                      f->windows_changed ||
-                      f->windows_structure_changed);
+     entire layout. So far I have seen no ill effects so we'll see. */
+  int frame_really_changed = (f->buffers_changed ||
+                             f->clip_changed ||
+                             f->faces_changed    ||
+                             f->frame_changed    ||
+                             f->modeline_changed ||
+                             f->subwindows_changed ||
+                             f->windows_changed ||
+                             f->windows_structure_changed);
 
   XSETWINDOW (window, w);
 
-  layout_height = glyph_height (image_instance, Qnil, findex, window);
-  layout_width = glyph_width (image_instance, Qnil, findex, window);
+  layout_height = glyph_height (image_instance, window);
+  layout_width = glyph_width (image_instance, window);
 
   dga->height = layout_height;
   dga->width = layout_width;
@@ -1225,13 +1269,17 @@ redisplay_output_layout (struct window *w,
 
   /* Highly dodgy optimization. We want to only output the whole
      layout if we really have to. */
-  if (frame_changed || IMAGE_INSTANCE_DIRTYP (p))
+  if (frame_really_changed 
+      || IMAGE_INSTANCE_LAYOUT_CHANGED (p)
+      || IMAGE_INSTANCE_WIDGET_FACE_CHANGED (p)
+      || IMAGE_INSTANCE_SIZE_CHANGED (p)
+      || IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
     {
       /* First clear the area we are drawing into. This is the easiest
         thing to do since we have many gaps that we have to make sure are
         filled in. */
       redisplay_clear_clipped_region (window, findex, db, dga, 1, Qnil);
-      
+
       /* Output a border if required */
       if (!NILP (IMAGE_INSTANCE_LAYOUT_BORDER (p)))
        {
@@ -1239,7 +1287,7 @@ redisplay_output_layout (struct window *w,
          enum edge_style style;
          int ypos = db->ypos;
          int height = dga->height;
-         
+
          if (dga->xoffset >= 0)
            edges |= EDGE_LEFT;
          if (dga->width - dga->xoffset == layout_width)
@@ -1248,7 +1296,7 @@ redisplay_output_layout (struct window *w,
            edges |= EDGE_TOP;
          if (dga->height - dga->yoffset == layout_height)
            edges |= EDGE_BOTTOM;
-         
+
          if (EQ (IMAGE_INSTANCE_LAYOUT_BORDER (p), Qetched_in))
            style = EDGE_ETCHED_IN;
          else if (EQ (IMAGE_INSTANCE_LAYOUT_BORDER (p), Qetched_out))
@@ -1267,13 +1315,13 @@ redisplay_output_layout (struct window *w,
          else
            style = EDGE_BEVEL_OUT;
 
-         MAYBE_DEVMETH (d, bevel_area, 
+         MAYBE_DEVMETH (d, bevel_area,
                         (w, findex, db->xpos,
-                         ypos, 
+                         ypos,
                          dga->width, height, 2, edges, style));
        }
     }
-    
+
   /* This shrinks the display box to exactly enclose the glyph
      area. */
   redisplay_normalize_display_box (db, dga);
@@ -1293,13 +1341,13 @@ redisplay_output_layout (struct window *w,
       /* First determine if the image is visible at all */
       if (IMAGE_INSTANCEP (child))
        {
-         struct Lisp_Image_Instance* childii = XIMAGE_INSTANCE (child);
+         Lisp_Image_Instance* childii = XIMAGE_INSTANCE (child);
          /* The enclosing layout offsets are +ve at this point */
          struct display_glyph_area cdga;
          cdga.xoffset  = IMAGE_INSTANCE_XOFFSET (childii) - dga->xoffset;
          cdga.yoffset = IMAGE_INSTANCE_YOFFSET (childii) - dga->yoffset;
-         cdga.width = glyph_width (child, Qnil, findex, window);
-         cdga.height = glyph_height (child, Qnil, findex, window);
+         cdga.width = glyph_width (child, window);
+         cdga.height = glyph_height (child, window);
 
          /* Although normalization is done by the output routines
             we have to do it here so that they don't try and
@@ -1325,25 +1373,25 @@ redisplay_output_layout (struct window *w,
                  {
                    /* #### This is well hacked and could use some
                       generalisation.*/
-                   if (redisplay_normalize_glyph_area (&cdb, &cdga) 
-                       &&  
-                       (frame_changed || IMAGE_INSTANCE_DIRTYP (childii)))
+                   if (redisplay_normalize_glyph_area (&cdb, &cdga)
+                       &&
+                       (frame_really_changed || IMAGE_INSTANCE_DIRTYP (childii)))
                      {
                        struct display_line dl; /* this is fake */
                        Lisp_Object string =
                          IMAGE_INSTANCE_TEXT_STRING (childii);
                        convert_bufbyte_string_into_emchar_dynarr
                          (XSTRING_DATA (string), XSTRING_LENGTH (string), buf);
-                       
+
                        redisplay_normalize_display_box (&cdb, &cdga);
                        /* Offsets are now +ve again so be careful
                           when fixing up the display line. */
                        xzero (dl);
                        /* Munge boxes into display lines. */
                        dl.ypos = (cdb.ypos - cdga.yoffset)
-                         + glyph_ascent (child, Qnil, findex, window);
-                       dl.ascent = glyph_ascent (child, Qnil, findex, window);
-                       dl.descent = glyph_descent (child, Qnil, findex, window);
+                         + glyph_ascent (child, window);
+                       dl.ascent = glyph_ascent (child, window);
+                       dl.descent = glyph_descent (child, window);
                        dl.top_clip = cdga.yoffset;
                        dl.clip = (dl.ypos + dl.descent) - (cdb.ypos + cdb.height);
                        /* output_string doesn't understand offsets in
@@ -1358,30 +1406,30 @@ redisplay_output_layout (struct window *w,
                      }
                  }
                  break;
-                 
+
                case IMAGE_MONO_PIXMAP:
                case IMAGE_COLOR_PIXMAP:
-                 if (frame_changed || IMAGE_INSTANCE_DIRTYP (childii))
+                 if (frame_really_changed || IMAGE_INSTANCE_DIRTYP (childii))
                    redisplay_output_pixmap (w, child, &cdb, &cdga, findex,
                                             0, 0, 0, 0);
                  break;
-             
+
                case IMAGE_WIDGET:
                case IMAGE_SUBWINDOW:
-                 if (frame_changed || IMAGE_INSTANCE_DIRTYP (childii))
+                 if (frame_really_changed || IMAGE_INSTANCE_DIRTYP (childii))
                    redisplay_output_subwindow (w, child, &cdb, &cdga, findex,
                                                0, 0, 0);
                  break;
-             
+
                case IMAGE_LAYOUT:
                  redisplay_output_layout (w, child, &cdb, &cdga, findex,
                                           0, 0, 0);
                  break;
-             
+
                case IMAGE_NOTHING:
                  /* nothing is as nothing does */
                  break;
-                 
+
                case IMAGE_POINTER:
                default:
                  abort ();
@@ -1389,6 +1437,11 @@ redisplay_output_layout (struct window *w,
            }
        }
     }
+  
+  /* Update any display properties. I'm not sure whether this actually
+     does anything for layouts except clear the changed flags. */
+  update_subwindow (image_instance);
+
   Dynarr_free (buf);
 }
 
@@ -1399,7 +1452,7 @@ redisplay_output_layout (struct window *w,
  output a pixmap.
  ****************************************************************************/
 void
-redisplay_output_pixmap (struct window *w, 
+redisplay_output_pixmap (struct window *w,
                         Lisp_Object image_instance,
                         struct display_box* db, struct display_glyph_area* dga,
                         face_index findex, int cursor_start, int cursor_width,
@@ -1407,7 +1460,7 @@ redisplay_output_pixmap (struct window *w,
 {
   struct frame *f = XFRAME (w->frame);
   struct device *d = XDEVICE (f->device);
-  struct Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
+  Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
   Lisp_Object window;
   XSETWINDOW (window, w);
 
@@ -1428,7 +1481,7 @@ redisplay_output_pixmap (struct window *w,
   if (!offset_bitmap)
     {
       redisplay_clear_clipped_region (window, findex,
-                                     db, dga, 
+                                     db, dga,
                                      (int)IMAGE_INSTANCE_PIXMAP_MASK (p),
                                      Qnil);
 
@@ -1485,7 +1538,7 @@ redisplay_clear_region (Lisp_Object locale, face_index findex, int x, int y,
 
   /* #### This isn't quite right for when this function is called
      from the toolbar code. */
-  
+
   /* Don't use a backing pixmap in the border area */
   if (x >= FRAME_LEFT_BORDER_END (f)
       && x < FRAME_RIGHT_BORDER_START (f)
@@ -1493,11 +1546,11 @@ redisplay_clear_region (Lisp_Object locale, face_index findex, int x, int y,
       && y < FRAME_BOTTOM_BORDER_START (f))
     {
       Lisp_Object temp;
-      
+
       if (w)
        {
          temp = WINDOW_FACE_CACHEL_BACKGROUND_PIXMAP (w, findex);
-         
+
          if (IMAGE_INSTANCEP (temp)
              && IMAGE_INSTANCE_PIXMAP_TYPE_P (XIMAGE_INSTANCE (temp)))
            {
@@ -1509,14 +1562,14 @@ redisplay_clear_region (Lisp_Object locale, face_index findex, int x, int y,
       else
        {
          temp = FACE_BACKGROUND_PIXMAP (Vdefault_face, locale);
-         
+
          if (IMAGE_INSTANCEP (temp)
              && IMAGE_INSTANCE_PIXMAP_TYPE_P (XIMAGE_INSTANCE (temp)))
            {
              background_pixmap = temp;
            }
        }
-    }      
+    }
 
   if (!UNBOUNDP (background_pixmap) &&
       XIMAGE_INSTANCE_PIXMAP_DEPTH (background_pixmap) == 0)
@@ -1537,13 +1590,13 @@ redisplay_clear_region (Lisp_Object locale, face_index findex, int x, int y,
       fcolor = (w ?
                WINDOW_FACE_CACHEL_BACKGROUND (w, findex) :
                FACE_BACKGROUND (Vdefault_face, locale));
-      
+
     }
-  
+
   if (UNBOUNDP (background_pixmap))
     background_pixmap = Qnil;
-  
-  DEVMETH (d, clear_region, 
+
+  DEVMETH (d, clear_region,
           (locale, d, f, findex, x, y, width, height, fcolor, bcolor, background_pixmap));
 }
 
@@ -1556,8 +1609,8 @@ redisplay_clear_region (Lisp_Object locale, face_index findex, int x, int y,
  around with by altering these. glyphsrc should be normalized.
  ****************************************************************************/
 static void
-redisplay_clear_clipped_region (Lisp_Object window, face_index findex, 
-       struct display_box* dest, struct display_glyph_area* glyphsrc, 
+redisplay_clear_clipped_region (Lisp_Object window, face_index findex,
+       struct display_box* dest, struct display_glyph_area* glyphsrc,
        int fullheight_p, Lisp_Object ignored_subwindow)
 {
   /* assume dest->xpos >= 0 */
@@ -1581,8 +1634,8 @@ redisplay_clear_clipped_region (Lisp_Object window, face_index findex,
     }
   else
     {
-      int yoffset = (glyphsrc->yoffset > 0 ? glyphsrc->yoffset : 0); 
-      
+      int yoffset = (glyphsrc->yoffset > 0 ? glyphsrc->yoffset : 0);
+
       /* We need to make sure that subwindows are unmapped from the
          whole area. */
       redisplay_unmap_subwindows_except_us (f, clear_x, dest->ypos,
@@ -1593,14 +1646,14 @@ redisplay_clear_clipped_region (Lisp_Object window, face_index findex,
        {
          redisplay_clear_region (window, findex, clear_x, dest->ypos,
                                  glyphsrc->width, yoffset);
-         
+
        }
       /* Then the bottom box */
       if (yoffset + glyphsrc->height < dest->height)
        {
          redisplay_clear_region (window, findex, clear_x,
                                  dest->ypos + yoffset + glyphsrc->height,
-                                 glyphsrc->width, 
+                                 glyphsrc->width,
                                  dest->height - (yoffset + glyphsrc->height));
 
        }
@@ -1614,7 +1667,7 @@ redisplay_clear_clipped_region (Lisp_Object window, face_index findex,
  Calculate the visible box for displaying src in dest.
  ****************************************************************************/
 int
-redisplay_normalize_glyph_area (struct display_box* dest, 
+redisplay_normalize_glyph_area (struct display_box* dest,
                                struct display_glyph_area* glyphsrc)
 {
   if (dest->xpos + glyphsrc->xoffset > dest->xpos + dest->width
@@ -1657,7 +1710,7 @@ redisplay_normalize_glyph_area (struct display_box* dest,
 }
 
 static void
-redisplay_normalize_display_box (struct display_box* dest, 
+redisplay_normalize_display_box (struct display_box* dest,
                                 struct display_glyph_area* glyphsrc)
 {
   /* Adjust the destination area. At the end of this the destination
@@ -1714,7 +1767,7 @@ redisplay_display_boxes_in_window_p (struct window* w,
       || db->ypos + db->height > bottom)
     /* We are not displaying in a window at all */
     return 0;
-  
+
   if (db->xpos + dga->xoffset >= left
       &&
       db->ypos + dga->yoffset >= top
@@ -1736,7 +1789,7 @@ redisplay_display_boxes_in_window_p (struct window* w,
 int
 redisplay_calculate_display_boxes (struct display_line *dl, int xpos,
                                   int xoffset, int start_pixpos, int width,
-                                  struct display_box* dest, 
+                                  struct display_box* dest,
                                   struct display_glyph_area* src)
 {
   dest->xpos = xpos;
@@ -1817,38 +1870,38 @@ redisplay_clear_to_window_end (struct window *w, int ypos1, int ypos2)
   else
     {
       int height = ypos2 - ypos1;
-      
+
       if (height)
        {
          Lisp_Object window;
          int bflag = 0 ; /* (window_needs_vertical_divider (w) ? 0 : 1);*/
          layout_bounds bounds;
-         
+
          bounds = calculate_display_line_boundaries (w, bflag);
          XSETWINDOW (window, w);
 
          if (window_is_leftmost (w))
            redisplay_clear_region (window, DEFAULT_INDEX, FRAME_LEFT_BORDER_START (f),
                                    ypos1, FRAME_BORDER_WIDTH (f), height);
-         
+
          if (bounds.left_in - bounds.left_out > 0)
            redisplay_clear_region (window,
                                    get_builtin_face_cache_index (w, Vleft_margin_face),
                                    bounds.left_out, ypos1,
                                    bounds.left_in - bounds.left_out, height);
-         
+
          if (bounds.right_in - bounds.left_in > 0)
-           redisplay_clear_region (window, 
+           redisplay_clear_region (window,
                                    DEFAULT_INDEX,
                                    bounds.left_in, ypos1,
                                    bounds.right_in - bounds.left_in, height);
-         
+
          if (bounds.right_out - bounds.right_in > 0)
            redisplay_clear_region (window,
                                    get_builtin_face_cache_index (w, Vright_margin_face),
                                    bounds.right_in, ypos1,
                                    bounds.right_out - bounds.right_in, height);
-         
+
          if (window_is_rightmost (w))
            redisplay_clear_region (window, DEFAULT_INDEX, FRAME_RIGHT_BORDER_START (f),
                                    ypos1, FRAME_BORDER_WIDTH (f), height);
@@ -2235,7 +2288,7 @@ bevel_modeline (struct window *w, struct display_line *dl)
       style = EDGE_BEVEL_OUT;
     }
 
-  MAYBE_DEVMETH (d, bevel_area, 
+  MAYBE_DEVMETH (d, bevel_area,
                 (w, MODELINE_INDEX, x, y, width, height, shadow_thickness,
                  EDGE_ALL, style));
 }