Mercurial > hg > xemacs-beta
comparison src/frame.c @ 3092:141c2920ea48
[xemacs-hg @ 2005-11-25 01:41:31 by crestani]
Incremental Garbage Collector
author | crestani |
---|---|
date | Fri, 25 Nov 2005 01:42:08 +0000 |
parents | facf3239ba30 |
children | 91950589598c |
comparison
equal
deleted
inserted
replaced
3091:c22d8984148c | 3092:141c2920ea48 |
---|---|
137 the dynamic allocation time adds up. */ | 137 the dynamic allocation time adds up. */ |
138 static Ichar_dynarr *title_string_ichar_dynarr; | 138 static Ichar_dynarr *title_string_ichar_dynarr; |
139 | 139 |
140 | 140 |
141 | 141 |
142 #ifndef NEW_GC | |
142 extern const struct sized_memory_description gtk_frame_data_description; | 143 extern const struct sized_memory_description gtk_frame_data_description; |
143 extern const struct sized_memory_description mswindows_frame_data_description; | 144 extern const struct sized_memory_description mswindows_frame_data_description; |
144 extern const struct sized_memory_description x_frame_data_description; | 145 extern const struct sized_memory_description x_frame_data_description; |
146 #endif /* not NEW_GC */ | |
145 | 147 |
146 static const struct memory_description frame_data_description_1 []= { | 148 static const struct memory_description frame_data_description_1 []= { |
149 #ifdef NEW_GC | |
150 #ifdef HAVE_GTK | |
151 { XD_LISP_OBJECT, gtk_console }, | |
152 #endif | |
153 #ifdef HAVE_MS_WINDOWS | |
154 { XD_LISP_OBJECT, mswindows_console }, | |
155 #endif | |
156 #ifdef HAVE_X_WINDOWS | |
157 { XD_LISP_OBJECT, x_console }, | |
158 #endif | |
159 #else /* not NEW_GC */ | |
147 #ifdef HAVE_GTK | 160 #ifdef HAVE_GTK |
148 { XD_BLOCK_PTR, gtk_console, 1, { >k_frame_data_description} }, | 161 { XD_BLOCK_PTR, gtk_console, 1, { >k_frame_data_description} }, |
149 #endif | 162 #endif |
150 #ifdef HAVE_MS_WINDOWS | 163 #ifdef HAVE_MS_WINDOWS |
151 { XD_BLOCK_PTR, mswindows_console, 1, { &mswindows_frame_data_description} }, | 164 { XD_BLOCK_PTR, mswindows_console, 1, { &mswindows_frame_data_description} }, |
152 #endif | 165 #endif |
153 #ifdef HAVE_X_WINDOWS | 166 #ifdef HAVE_X_WINDOWS |
154 { XD_BLOCK_PTR, x_console, 1, { &x_frame_data_description} }, | 167 { XD_BLOCK_PTR, x_console, 1, { &x_frame_data_description} }, |
155 #endif | 168 #endif |
169 #endif /* not NEW_GC */ | |
156 { XD_END } | 170 { XD_END } |
157 }; | 171 }; |
158 | 172 |
159 static const struct sized_memory_description frame_data_description = { | 173 static const struct sized_memory_description frame_data_description = { |
160 sizeof (void *), frame_data_description_1 | 174 sizeof (void *), frame_data_description_1 |
161 }; | 175 }; |
162 | 176 |
177 #ifdef NEW_GC | |
178 static const struct memory_description expose_ignore_description_1 [] = { | |
179 { XD_LISP_OBJECT, offsetof (struct expose_ignore, next) }, | |
180 { XD_END } | |
181 }; | |
182 | |
183 DEFINE_LRECORD_IMPLEMENTATION ("expose-ignore", | |
184 expose_ignore, | |
185 1, /*dumpable-flag*/ | |
186 0, 0, 0, 0, 0, | |
187 expose_ignore_description_1, | |
188 struct expose_ignore); | |
189 #else /* not NEW_GC */ | |
163 extern const struct sized_memory_description expose_ignore_description; | 190 extern const struct sized_memory_description expose_ignore_description; |
164 | 191 |
165 static const struct memory_description expose_ignore_description_1 [] = { | 192 static const struct memory_description expose_ignore_description_1 [] = { |
166 { XD_BLOCK_PTR, offsetof (struct expose_ignore, next), | 193 { XD_BLOCK_PTR, offsetof (struct expose_ignore, next), |
167 1, { &expose_ignore_description } }, | 194 1, { &expose_ignore_description } }, |
170 | 197 |
171 const struct sized_memory_description expose_ignore_description = { | 198 const struct sized_memory_description expose_ignore_description = { |
172 sizeof (struct expose_ignore), | 199 sizeof (struct expose_ignore), |
173 expose_ignore_description_1 | 200 expose_ignore_description_1 |
174 }; | 201 }; |
202 #endif /* not NEW_GC */ | |
175 | 203 |
176 static const struct memory_description display_line_dynarr_pointer_description_1 []= { | 204 static const struct memory_description display_line_dynarr_pointer_description_1 []= { |
177 { XD_BLOCK_PTR, 0, 1, { &display_line_dynarr_description} }, | 205 { XD_BLOCK_PTR, 0, 1, { &display_line_dynarr_description} }, |
178 { XD_END } | 206 { XD_END } |
179 }; | 207 }; |
187 #define MARKED_SLOT(x) { XD_LISP_OBJECT, offsetof (struct frame, x) }, | 215 #define MARKED_SLOT(x) { XD_LISP_OBJECT, offsetof (struct frame, x) }, |
188 #define MARKED_SLOT_ARRAY(slot, size) \ | 216 #define MARKED_SLOT_ARRAY(slot, size) \ |
189 { XD_LISP_OBJECT_ARRAY, offsetof (struct frame, slot), size }, | 217 { XD_LISP_OBJECT_ARRAY, offsetof (struct frame, slot), size }, |
190 #include "frameslots.h" | 218 #include "frameslots.h" |
191 | 219 |
220 #ifdef NEW_GC | |
221 { XD_LISP_OBJECT, offsetof (struct frame, subwindow_exposures) }, | |
222 { XD_LISP_OBJECT, offsetof (struct frame, subwindow_exposures_tail) }, | |
223 #else /* not NEW_GC */ | |
192 { XD_BLOCK_PTR, offsetof (struct frame, subwindow_exposures), | 224 { XD_BLOCK_PTR, offsetof (struct frame, subwindow_exposures), |
193 1, { &expose_ignore_description } }, | 225 1, { &expose_ignore_description } }, |
194 { XD_BLOCK_PTR, offsetof (struct frame, subwindow_exposures_tail), | 226 { XD_BLOCK_PTR, offsetof (struct frame, subwindow_exposures_tail), |
195 1, { &expose_ignore_description } }, | 227 1, { &expose_ignore_description } }, |
228 #endif /* not NEW_GC */ | |
196 | 229 |
197 #ifdef HAVE_SCROLLBARS | 230 #ifdef HAVE_SCROLLBARS |
198 { XD_LISP_OBJECT, offsetof (struct frame, sb_vcache) }, | 231 { XD_LISP_OBJECT, offsetof (struct frame, sb_vcache) }, |
199 { XD_LISP_OBJECT, offsetof (struct frame, sb_hcache) }, | 232 { XD_LISP_OBJECT, offsetof (struct frame, sb_hcache) }, |
200 #endif /* HAVE_SCROLLBARS */ | 233 #endif /* HAVE_SCROLLBARS */ |
3404 fact. f->size_change_pending will get reset below. The most that | 3437 fact. f->size_change_pending will get reset below. The most that |
3405 can happen is that we will cycle through redisplay once more | 3438 can happen is that we will cycle through redisplay once more |
3406 --andy. */ | 3439 --andy. */ |
3407 MARK_FRAME_SIZE_CHANGED (f); | 3440 MARK_FRAME_SIZE_CHANGED (f); |
3408 | 3441 |
3442 #ifdef NEW_GC | |
3443 if (delay || hold_frame_size_changes) | |
3444 #else /* not NEW_GC */ | |
3409 if (delay || hold_frame_size_changes || gc_in_progress) | 3445 if (delay || hold_frame_size_changes || gc_in_progress) |
3446 #endif /* not NEW_GC */ | |
3410 { | 3447 { |
3411 f->new_width = newwidth; | 3448 f->new_width = newwidth; |
3412 f->new_height = newheight; | 3449 f->new_height = newheight; |
3413 return; | 3450 return; |
3414 } | 3451 } |
3574 | 3611 |
3575 void | 3612 void |
3576 syms_of_frame (void) | 3613 syms_of_frame (void) |
3577 { | 3614 { |
3578 INIT_LRECORD_IMPLEMENTATION (frame); | 3615 INIT_LRECORD_IMPLEMENTATION (frame); |
3616 #ifdef NEW_GC | |
3617 INIT_LRECORD_IMPLEMENTATION (expose_ignore); | |
3618 #endif /* NEW_GC */ | |
3579 | 3619 |
3580 DEFSYMBOL (Qdelete_frame_hook); | 3620 DEFSYMBOL (Qdelete_frame_hook); |
3581 DEFSYMBOL (Qselect_frame_hook); | 3621 DEFSYMBOL (Qselect_frame_hook); |
3582 DEFSYMBOL (Qdeselect_frame_hook); | 3622 DEFSYMBOL (Qdeselect_frame_hook); |
3583 DEFSYMBOL (Qcreate_frame_hook); | 3623 DEFSYMBOL (Qcreate_frame_hook); |