diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-07-27 19:51:36 +0100 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2009-07-27 13:16:30 -0700 |
commit | e19b2866ed095cf66e9344efa442ae01dc7913ac (patch) | |
tree | 4a596d85f675873b3d87463a4a3e9a4d8294c367 /src/cairo-rtree.c | |
parent | e0b7979a30fff2a22fef5c170fd72c37c197ee0e (diff) | |
download | cairo-e19b2866ed095cf66e9344efa442ae01dc7913ac.tar.gz |
[gl] Actually remove the glyph from the rtree on scaled_font_fini
Mark the node as available when the scaled_glyph is finished, and then
attempt to collapse the parent node.
Diffstat (limited to 'src/cairo-rtree.c')
-rw-r--r-- | src/cairo-rtree.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/cairo-rtree.c b/src/cairo-rtree.c index ba142b7ac..d4bdbd4bd 100644 --- a/src/cairo-rtree.c +++ b/src/cairo-rtree.c @@ -185,6 +185,19 @@ _cairo_rtree_node_insert (cairo_rtree_t *rtree, return CAIRO_STATUS_SUCCESS; } +void +_cairo_rtree_node_remove (cairo_rtree_t *rtree, cairo_rtree_node_t *node) +{ + assert (node->state == CAIRO_RTREE_NODE_OCCUPIED); + assert (node->pinned == FALSE); + + node->state = CAIRO_RTREE_NODE_AVAILABLE; + cairo_list_move (&node->link, &rtree->available); + + if (! node->parent->pinned) + _cairo_rtree_node_collapse (rtree, node->parent); +} + cairo_int_status_t _cairo_rtree_insert (cairo_rtree_t *rtree, int width, |