Mercurial > hg > xemacs-beta
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 |