comparison src/frame.c @ 384:bbff43aa5eb7 r21-2-7

Import from CVS: tag r21-2-7
author cvs
date Mon, 13 Aug 2007 11:08:24 +0200
parents 8626e4521993
children 74fd4e045ea6
comparison
equal deleted inserted replaced
383:6a50c6a581a5 384:bbff43aa5eb7
126 struct frame *f = XFRAME (obj); 126 struct frame *f = XFRAME (obj);
127 127
128 #define MARKED_SLOT(x) ((void) (markobj (f->x))); 128 #define MARKED_SLOT(x) ((void) (markobj (f->x)));
129 #include "frameslots.h" 129 #include "frameslots.h"
130 130
131 mark_subwindow_cachels (f->subwindow_cachels, markobj);
132
131 if (FRAME_LIVE_P (f)) /* device is nil for a dead frame */ 133 if (FRAME_LIVE_P (f)) /* device is nil for a dead frame */
132 MAYBE_FRAMEMETH (f, mark_frame, (f, markobj)); 134 MAYBE_FRAMEMETH (f, mark_frame, (f, markobj));
133 135
134 return Qnil; 136 return Qnil;
135 } 137 }
200 in xfns.c. */ 202 in xfns.c. */
201 203
202 f->root_window = root_window; 204 f->root_window = root_window;
203 f->selected_window = root_window; 205 f->selected_window = root_window;
204 f->last_nonminibuf_window = root_window; 206 f->last_nonminibuf_window = root_window;
207
208 /* cache of subwindows visible on frame */
209 f->subwindow_cachels = Dynarr_new (subwindow_cachel);
205 210
206 /* Choose a buffer for the frame's root window. */ 211 /* Choose a buffer for the frame's root window. */
207 XWINDOW (root_window)->buffer = Qt; 212 XWINDOW (root_window)->buffer = Qt;
208 { 213 {
209 Lisp_Object buf; 214 Lisp_Object buf;
449 methods are called because it may potentially call some things itself 454 methods are called because it may potentially call some things itself
450 which depend on the normal frame methods having initialized 455 which depend on the normal frame methods having initialized
451 things. */ 456 things. */
452 init_frame_toolbars (f); 457 init_frame_toolbars (f);
453 #endif 458 #endif
454
455 reset_face_cachels (XWINDOW (FRAME_SELECTED_WINDOW (f))); 459 reset_face_cachels (XWINDOW (FRAME_SELECTED_WINDOW (f)));
456 reset_glyph_cachels (XWINDOW (FRAME_SELECTED_WINDOW (f))); 460 reset_glyph_cachels (XWINDOW (FRAME_SELECTED_WINDOW (f)));
461 reset_subwindow_cachels (f);
457 change_frame_size (f, f->height, f->width, 0); 462 change_frame_size (f, f->height, f->width, 0);
458 } 463 }
459 464
460 MAYBE_FRAMEMETH (f, init_frame_2, (f, props)); 465 MAYBE_FRAMEMETH (f, init_frame_2, (f, props));
461 Fset_frame_properties (frame, props); 466 Fset_frame_properties (frame, props);
1528 1533
1529 /* Mark all the windows that used to be on FRAME as deleted, and then 1534 /* Mark all the windows that used to be on FRAME as deleted, and then
1530 remove the reference to them. */ 1535 remove the reference to them. */
1531 delete_all_subwindows (XWINDOW (f->root_window)); 1536 delete_all_subwindows (XWINDOW (f->root_window));
1532 f->root_window = Qnil; 1537 f->root_window = Qnil;
1538
1539 /* clear out the cached glyph information */
1540 if (f->subwindow_cachels)
1541 {
1542 Dynarr_free (f->subwindow_cachels);
1543 f->subwindow_cachels = 0;
1544 }
1533 1545
1534 /* Remove the frame now from the list. This way, any events generated 1546 /* Remove the frame now from the list. This way, any events generated
1535 on this frame by the maneuvers below will disperse themselves. */ 1547 on this frame by the maneuvers below will disperse themselves. */
1536 1548
1537 /* This used to be Fdelq(), but that will cause a seg fault if the 1549 /* This used to be Fdelq(), but that will cause a seg fault if the