Mercurial > hg > xemacs-beta
comparison src/redisplay.c @ 269:b2472a1930f2 r20-5b33
Import from CVS: tag r20-5b33
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:27:19 +0200 |
parents | 966663fcf606 |
children | c5d627a313b1 |
comparison
equal
deleted
inserted
replaced
268:6ced69ccd85f | 269:b2472a1930f2 |
---|---|
417 int faces_changed; | 417 int faces_changed; |
418 | 418 |
419 /* Nonzero means some frames have been marked as garbaged */ | 419 /* Nonzero means some frames have been marked as garbaged */ |
420 int frame_changed; | 420 int frame_changed; |
421 | 421 |
422 /* non-zero if any of the builtin display glyphs (continuation, | |
423 hscroll, control-arrow, etc) is in need of updating | |
424 somewhere. */ | |
425 int glyphs_changed; | |
426 int glyphs_changed_set; | |
427 | |
422 /* This variable is 1 if the icon has to be updated. | 428 /* This variable is 1 if the icon has to be updated. |
423 It is set to 1 when `frame-icon-glyph' changes. */ | 429 It is set to 1 when `frame-icon-glyph' changes. */ |
424 int icon_changed; | 430 int icon_changed; |
425 int icon_changed_set; | 431 int icon_changed_set; |
426 | 432 |
427 /* This variable is 1 if the menubar widget has to be updated. | 433 /* This variable is 1 if the menubar widget has to be updated. |
428 It is set to 1 by set-menubar-dirty-flag and cleared when the widget | 434 It is set to 1 by set-menubar-dirty-flag and cleared when the widget |
429 has been indapted. */ | 435 has been updated. */ |
430 /* indapted???? */ | |
431 int menubar_changed; | 436 int menubar_changed; |
432 int menubar_changed_set; | 437 int menubar_changed_set; |
433 | 438 |
434 /* true iff we should redraw the modelines on the next redisplay */ | 439 /* true iff we should redraw the modelines on the next redisplay */ |
435 int modeline_changed; | 440 int modeline_changed; |
5588 else | 5593 else |
5589 mark_face_cachels_as_not_updated (w); | 5594 mark_face_cachels_as_not_updated (w); |
5590 | 5595 |
5591 /* Ditto the glyph cache elements. */ | 5596 /* Ditto the glyph cache elements. */ |
5592 if ((!echo_active && b != window_display_buffer (w)) | 5597 if ((!echo_active && b != window_display_buffer (w)) |
5593 || !Dynarr_length (w->glyph_cachels)) | 5598 || !Dynarr_length (w->glyph_cachels) |
5599 || f->glyphs_changed) | |
5594 reset_glyph_cachels (w); | 5600 reset_glyph_cachels (w); |
5595 else | 5601 else |
5596 mark_glyph_cachels_as_not_updated (w); | 5602 mark_glyph_cachels_as_not_updated (w); |
5597 | 5603 |
5598 /* If the marker's buffer is not the window's buffer, then we need | 5604 /* If the marker's buffer is not the window's buffer, then we need |
5666 && selected_globally | 5672 && selected_globally |
5667 && !w->windows_changed | 5673 && !w->windows_changed |
5668 && !f->clip_changed | 5674 && !f->clip_changed |
5669 && !f->extents_changed | 5675 && !f->extents_changed |
5670 && !f->faces_changed | 5676 && !f->faces_changed |
5677 && !f->glyphs_changed | |
5671 && !f->point_changed | 5678 && !f->point_changed |
5672 && !f->windows_structure_changed) | 5679 && !f->windows_structure_changed) |
5673 { | 5680 { |
5674 /* If not, we're done. */ | 5681 /* If not, we're done. */ |
5675 if (f->modeline_changed) | 5682 if (f->modeline_changed) |
5685 do things the hard way. */ | 5692 do things the hard way. */ |
5686 if (!w->windows_changed | 5693 if (!w->windows_changed |
5687 && !f->clip_changed | 5694 && !f->clip_changed |
5688 && !f->extents_changed | 5695 && !f->extents_changed |
5689 && !f->faces_changed | 5696 && !f->faces_changed |
5697 && !f->glyphs_changed | |
5690 && !f->windows_structure_changed) | 5698 && !f->windows_structure_changed) |
5691 { | 5699 { |
5692 if (point_visible (w, pointm, CURRENT_DISP) | 5700 if (point_visible (w, pointm, CURRENT_DISP) |
5693 && w->last_point_x[CURRENT_DISP] != -1 | 5701 && w->last_point_x[CURRENT_DISP] != -1 |
5694 && w->last_point_y[CURRENT_DISP] != -1) | 5702 && w->last_point_y[CURRENT_DISP] != -1) |
5741 /* See if we can update the data structures locally based on | 5749 /* See if we can update the data structures locally based on |
5742 knowledge of what changed in the buffer. */ | 5750 knowledge of what changed in the buffer. */ |
5743 else if (!w->windows_changed | 5751 else if (!w->windows_changed |
5744 && !f->clip_changed | 5752 && !f->clip_changed |
5745 && !f->faces_changed | 5753 && !f->faces_changed |
5754 && !f->glyphs_changed | |
5746 && !f->windows_structure_changed | 5755 && !f->windows_structure_changed |
5747 && !f->frame_changed | 5756 && !f->frame_changed |
5748 && !truncation_changed | 5757 && !truncation_changed |
5749 && pointm >= startp | 5758 && pointm >= startp |
5750 && regenerate_window_incrementally (w, startp, pointm)) | 5759 && regenerate_window_incrementally (w, startp, pointm)) |
6004 f->buffers_changed = 0; | 6013 f->buffers_changed = 0; |
6005 f->clip_changed = 0; | 6014 f->clip_changed = 0; |
6006 f->extents_changed = 0; | 6015 f->extents_changed = 0; |
6007 f->faces_changed = 0; | 6016 f->faces_changed = 0; |
6008 f->frame_changed = 0; | 6017 f->frame_changed = 0; |
6018 f->glyphs_changed = 0; | |
6009 f->icon_changed = 0; | 6019 f->icon_changed = 0; |
6010 f->menubar_changed = 0; | 6020 f->menubar_changed = 0; |
6011 f->modeline_changed = 0; | 6021 f->modeline_changed = 0; |
6012 f->point_changed = 0; | 6022 f->point_changed = 0; |
6013 f->toolbar_changed = 0; | 6023 f->toolbar_changed = 0; |
6067 { | 6077 { |
6068 if (f->buffers_changed || f->clip_changed || f->extents_changed || | 6078 if (f->buffers_changed || f->clip_changed || f->extents_changed || |
6069 f->faces_changed || f->frame_changed || f->menubar_changed || | 6079 f->faces_changed || f->frame_changed || f->menubar_changed || |
6070 f->modeline_changed || f->point_changed || f->size_changed || | 6080 f->modeline_changed || f->point_changed || f->size_changed || |
6071 f->toolbar_changed || f->windows_changed || | 6081 f->toolbar_changed || f->windows_changed || |
6072 f->windows_structure_changed) | 6082 f->windows_structure_changed || |
6083 f->glyphs_changed) | |
6073 { | 6084 { |
6074 preempted = redisplay_frame (f, 0); | 6085 preempted = redisplay_frame (f, 0); |
6075 } | 6086 } |
6076 | 6087 |
6077 if (preempted) | 6088 if (preempted) |
6101 { | 6112 { |
6102 if (f->buffers_changed || f->clip_changed || f->extents_changed || | 6113 if (f->buffers_changed || f->clip_changed || f->extents_changed || |
6103 f->faces_changed || f->frame_changed || f->menubar_changed || | 6114 f->faces_changed || f->frame_changed || f->menubar_changed || |
6104 f->modeline_changed || f->point_changed || f->size_changed || | 6115 f->modeline_changed || f->point_changed || f->size_changed || |
6105 f->toolbar_changed || f->windows_changed || | 6116 f->toolbar_changed || f->windows_changed || |
6106 f->windows_structure_changed) | 6117 f->windows_structure_changed || |
6118 f->glyphs_changed) | |
6107 { | 6119 { |
6108 preempted = redisplay_frame (f, 0); | 6120 preempted = redisplay_frame (f, 0); |
6109 } | 6121 } |
6110 | 6122 |
6111 if (preempted) | 6123 if (preempted) |
6121 d->buffers_changed = 0; | 6133 d->buffers_changed = 0; |
6122 d->clip_changed = 0; | 6134 d->clip_changed = 0; |
6123 d->extents_changed = 0; | 6135 d->extents_changed = 0; |
6124 d->faces_changed = 0; | 6136 d->faces_changed = 0; |
6125 d->frame_changed = 0; | 6137 d->frame_changed = 0; |
6138 d->glyphs_changed = 0; | |
6126 d->icon_changed = 0; | 6139 d->icon_changed = 0; |
6127 d->menubar_changed = 0; | 6140 d->menubar_changed = 0; |
6128 d->modeline_changed = 0; | 6141 d->modeline_changed = 0; |
6129 d->point_changed = 0; | 6142 d->point_changed = 0; |
6130 d->toolbar_changed = 0; | 6143 d->toolbar_changed = 0; |
6166 | 6179 |
6167 if (!buffers_changed && !clip_changed && !extents_changed && | 6180 if (!buffers_changed && !clip_changed && !extents_changed && |
6168 !faces_changed && !frame_changed && !icon_changed && | 6181 !faces_changed && !frame_changed && !icon_changed && |
6169 !menubar_changed && !modeline_changed && !point_changed && | 6182 !menubar_changed && !modeline_changed && !point_changed && |
6170 !size_changed && !toolbar_changed && !windows_changed && | 6183 !size_changed && !toolbar_changed && !windows_changed && |
6184 !glyphs_changed && | |
6171 !windows_structure_changed && !disable_preemption && | 6185 !windows_structure_changed && !disable_preemption && |
6172 preemption_count < max_preempts) | 6186 preemption_count < max_preempts) |
6173 goto done; | 6187 goto done; |
6174 | 6188 |
6175 DEVICE_LOOP_NO_BREAK (devcons, concons) | 6189 DEVICE_LOOP_NO_BREAK (devcons, concons) |
6179 | 6193 |
6180 if (d->buffers_changed || d->clip_changed || d->extents_changed || | 6194 if (d->buffers_changed || d->clip_changed || d->extents_changed || |
6181 d->faces_changed || d->frame_changed || d->icon_changed || | 6195 d->faces_changed || d->frame_changed || d->icon_changed || |
6182 d->menubar_changed || d->modeline_changed || d->point_changed || | 6196 d->menubar_changed || d->modeline_changed || d->point_changed || |
6183 d->size_changed || d->toolbar_changed || d->windows_changed || | 6197 d->size_changed || d->toolbar_changed || d->windows_changed || |
6184 d->windows_structure_changed) | 6198 d->windows_structure_changed || |
6199 d->glyphs_changed) | |
6185 { | 6200 { |
6186 preempted = redisplay_device (d); | 6201 preempted = redisplay_device (d); |
6187 | 6202 |
6188 if (preempted) | 6203 if (preempted) |
6189 { | 6204 { |
6202 /* Mark redisplay as accurate */ | 6217 /* Mark redisplay as accurate */ |
6203 buffers_changed = 0; | 6218 buffers_changed = 0; |
6204 clip_changed = 0; | 6219 clip_changed = 0; |
6205 extents_changed = 0; | 6220 extents_changed = 0; |
6206 frame_changed = 0; | 6221 frame_changed = 0; |
6222 glyphs_changed = 0; | |
6207 icon_changed = 0; | 6223 icon_changed = 0; |
6208 menubar_changed = 0; | 6224 menubar_changed = 0; |
6209 modeline_changed = 0; | 6225 modeline_changed = 0; |
6210 point_changed = 0; | 6226 point_changed = 0; |
6211 toolbar_changed = 0; | 6227 toolbar_changed = 0; |
8578 | 8594 |
8579 void | 8595 void |
8580 redisplay_glyph_changed (Lisp_Object glyph, Lisp_Object property, | 8596 redisplay_glyph_changed (Lisp_Object glyph, Lisp_Object property, |
8581 Lisp_Object locale) | 8597 Lisp_Object locale) |
8582 { | 8598 { |
8583 MARK_CLIP_CHANGED; | 8599 if (WINDOWP (locale)) |
8600 { | |
8601 struct frame *f = XFRAME (WINDOW_FRAME (XWINDOW (locale))); | |
8602 MARK_FRAME_GLYPHS_CHANGED (f); | |
8603 } | |
8604 else if (FRAMEP (locale)) | |
8605 { | |
8606 struct frame *f = XFRAME (locale); | |
8607 MARK_FRAME_GLYPHS_CHANGED (f); | |
8608 } | |
8609 else if (DEVICEP (locale)) | |
8610 { | |
8611 Lisp_Object frmcons; | |
8612 DEVICE_FRAME_LOOP (frmcons, XDEVICE (locale)) | |
8613 { | |
8614 struct frame *f = XFRAME (XCAR (frmcons)); | |
8615 MARK_FRAME_GLYPHS_CHANGED (f); | |
8616 } | |
8617 } | |
8618 else if (CONSOLEP (locale)) | |
8619 { | |
8620 Lisp_Object frmcons, devcons; | |
8621 CONSOLE_FRAME_LOOP_NO_BREAK (frmcons, devcons, XCONSOLE (locale)) | |
8622 { | |
8623 struct frame *f = XFRAME (XCAR (frmcons)); | |
8624 MARK_FRAME_GLYPHS_CHANGED (f); | |
8625 } | |
8626 } | |
8627 else /* global or buffer */ | |
8628 { | |
8629 Lisp_Object frmcons, devcons, concons; | |
8630 FRAME_LOOP_NO_BREAK (frmcons, devcons, concons) | |
8631 { | |
8632 struct frame *f = XFRAME (XCAR (frmcons)); | |
8633 MARK_FRAME_GLYPHS_CHANGED (f); | |
8634 } | |
8635 } | |
8584 } | 8636 } |
8585 | 8637 |
8586 static void | 8638 static void |
8587 text_cursor_visible_p_changed (Lisp_Object specifier, struct window *w, | 8639 text_cursor_visible_p_changed (Lisp_Object specifier, struct window *w, |
8588 Lisp_Object oldval) | 8640 Lisp_Object oldval) |