comparison src/event.c @ 314:6c350fc92ae3

Cache rednering result is now workable. - Know issues - For unknow issue, CAIRO_OPERATOR_CLEAR will not be limited by clipping. Image will be cleaned in a strange way. Maybe, it is a bug of Cairo.
author Thinker K.F. Li <thinker@branda.to>
date Thu, 05 Mar 2009 00:54:42 +0800
parents 29acbd8a0dd0
children 7f7855df2af0
comparison
equal deleted inserted replaced
313:5737548e922f 314:6c350fc92ae3
255 255
256 static 256 static
257 coord_t *preorder_coord_subtree(coord_t *root, coord_t *last) { 257 coord_t *preorder_coord_subtree(coord_t *root, coord_t *last) {
258 if(STAILQ_HEAD(last->children) && !(last->flags & COF_SKIP)) 258 if(STAILQ_HEAD(last->children) && !(last->flags & COF_SKIP))
259 return STAILQ_HEAD(last->children); 259 return STAILQ_HEAD(last->children);
260
261 last->flags &= ~COF_SKIP;
262
260 if(last == root) 263 if(last == root)
261 return NULL; 264 return NULL;
262 while(STAILQ_NEXT(coord_t, sibling, last) == NULL) { 265 while(STAILQ_NEXT(coord_t, sibling, last) == NULL) {
263 if(last == root) 266 if(last == root)
264 return NULL; 267 return NULL;
267 return STAILQ_NEXT(coord_t, sibling, last); 270 return STAILQ_NEXT(coord_t, sibling, last);
268 } 271 }
269 272
270 static 273 static
271 void preorder_coord_skip_subtree(coord_t *coord) { 274 void preorder_coord_skip_subtree(coord_t *coord) {
272 coord->flags &= ~COF_SKIP; 275 coord->flags |= COF_SKIP;
273 } 276 }
274 277
275 static 278 static
276 coord_t *postorder_coord_subtree(coord_t *root, coord_t *last) { 279 coord_t *postorder_coord_subtree(coord_t *root, coord_t *last) {
277 coord_t *cur; 280 coord_t *cur;