comparison src/redisplay.c @ 400:a86b2b5e0111 r21-2-30

Import from CVS: tag r21-2-30
author cvs
date Mon, 13 Aug 2007 11:14:34 +0200
parents 74fd4e045ea6
children 2f8bb876ab1d
comparison
equal deleted inserted replaced
399:376370fb5946 400:a86b2b5e0111
6025 && !f->clip_changed 6025 && !f->clip_changed
6026 && !f->extents_changed 6026 && !f->extents_changed
6027 && !f->faces_changed 6027 && !f->faces_changed
6028 && !f->glyphs_changed 6028 && !f->glyphs_changed
6029 && !f->subwindows_changed 6029 && !f->subwindows_changed
6030 && !f->subwindows_state_changed 6030 /* && !f->subwindows_state_changed*/
6031 && !f->point_changed 6031 && !f->point_changed
6032 && !f->windows_structure_changed) 6032 && !f->windows_structure_changed)
6033 { 6033 {
6034 /* If not, we're done. */ 6034 /* If not, we're done. */
6035 if (f->modeline_changed) 6035 if (f->modeline_changed)
6047 && !f->clip_changed 6047 && !f->clip_changed
6048 && !f->extents_changed 6048 && !f->extents_changed
6049 && !f->faces_changed 6049 && !f->faces_changed
6050 && !f->glyphs_changed 6050 && !f->glyphs_changed
6051 && !f->subwindows_changed 6051 && !f->subwindows_changed
6052 && !f->subwindows_state_changed 6052 /* && !f->subwindows_state_changed*/
6053 && !f->windows_structure_changed) 6053 && !f->windows_structure_changed)
6054 { 6054 {
6055 if (point_visible (w, pointm, CURRENT_DISP) 6055 if (point_visible (w, pointm, CURRENT_DISP)
6056 && w->last_point_x[CURRENT_DISP] != -1 6056 && w->last_point_x[CURRENT_DISP] != -1
6057 && w->last_point_y[CURRENT_DISP] != -1) 6057 && w->last_point_y[CURRENT_DISP] != -1)
6106 else if (!w->windows_changed 6106 else if (!w->windows_changed
6107 && !f->clip_changed 6107 && !f->clip_changed
6108 && !f->faces_changed 6108 && !f->faces_changed
6109 && !f->glyphs_changed 6109 && !f->glyphs_changed
6110 && !f->subwindows_changed 6110 && !f->subwindows_changed
6111 && !f->subwindows_state_changed 6111 /* && !f->subwindows_state_changed*/
6112 && !f->windows_structure_changed 6112 && !f->windows_structure_changed
6113 && !f->frame_changed 6113 && !f->frame_changed
6114 && !truncation_changed 6114 && !truncation_changed
6115 && pointm >= startp 6115 && pointm >= startp
6116 && regenerate_window_incrementally (w, startp, pointm)) 6116 && regenerate_window_incrementally (w, startp, pointm))
6361 /* we have to do this so the gutter gets regenerated. */ 6361 /* we have to do this so the gutter gets regenerated. */
6362 reset_gutter_display_lines (f); 6362 reset_gutter_display_lines (f);
6363 } 6363 }
6364 else 6364 else
6365 mark_subwindow_cachels_as_not_updated (f); 6365 mark_subwindow_cachels_as_not_updated (f);
6366
6366 /* We can now update the gutters, safe in the knowledge that our 6367 /* We can now update the gutters, safe in the knowledge that our
6367 efforts won't get undone. */ 6368 efforts won't get undone. */
6369
6370 /* #### This can call lisp, it may be that if the subwindow cachels
6371 have been reset there are no remaining references to the
6372 displayed glyphs and so they get garbage collected. We should
6373 consider putting this call inside the critical redisplay
6374 section. */
6368 update_frame_gutters (f); 6375 update_frame_gutters (f);
6369 6376
6370 hold_frame_size_changes (); 6377 hold_frame_size_changes ();
6371 6378
6372 /* ----------------- BEGIN CRITICAL REDISPLAY SECTION ---------------- */ 6379 /* ----------------- BEGIN CRITICAL REDISPLAY SECTION ---------------- */
7045 mark_object (gb->extent); 7052 mark_object (gb->extent);
7046 } 7053 }
7047 } 7054 }
7048 } 7055 }
7049 7056
7050 static void 7057 /* See the comment in image_instantiate_cache_result as to why marking
7058 the glyph will also mark the image_instance. */
7059 void
7051 mark_redisplay_structs (display_line_dynarr *dla) 7060 mark_redisplay_structs (display_line_dynarr *dla)
7052 { 7061 {
7053 display_line *dl = Dynarr_atp (dla, 0); 7062 display_line *dl = Dynarr_atp (dla, 0);
7054 display_line *dl_last = Dynarr_atp (dla, Dynarr_length (dla)); 7063 display_line *dl_last = Dynarr_atp (dla, Dynarr_length (dla));
7055 7064
7105 FRAME_LOOP_NO_BREAK (frmcons, devcons, concons) 7114 FRAME_LOOP_NO_BREAK (frmcons, devcons, concons)
7106 { 7115 {
7107 struct frame *f = XFRAME (XCAR (frmcons)); 7116 struct frame *f = XFRAME (XCAR (frmcons));
7108 update_frame_window_mirror (f); 7117 update_frame_window_mirror (f);
7109 mark_window_mirror (f->root_mirror); 7118 mark_window_mirror (f->root_mirror);
7119 mark_gutters (f);
7110 } 7120 }
7111 } 7121 }
7112 7122
7113 /***************************************************************************** 7123 /*****************************************************************************
7114 Line Start Cache Description and Rationale 7124 Line Start Cache Description and Rationale