summaryrefslogtreecommitdiff
path: root/src/cairo-rtree.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-07-27 19:51:36 +0100
committerEric Anholt <eric@anholt.net>2009-07-27 13:16:30 -0700
commite19b2866ed095cf66e9344efa442ae01dc7913ac (patch)
tree4a596d85f675873b3d87463a4a3e9a4d8294c367 /src/cairo-rtree.c
parente0b7979a30fff2a22fef5c170fd72c37c197ee0e (diff)
downloadcairo-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.c13
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,