From 79a120d770a928b52a330c461054f75abfe6aca8 Mon Sep 17 00:00:00 2001
From: Matthew Willis <matthew.willis@mac.com>
Date: Mon, 2 Jun 2008 16:31:32 -0700
Subject: [PATCH] fix bugs and also destroy textures whose refcounts are 0 on
 ungraft*

---
 extra/pango/cairo/gadgets/gadgets.factor | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/extra/pango/cairo/gadgets/gadgets.factor b/extra/pango/cairo/gadgets/gadgets.factor
index fb021e9320..4c46b4e501 100644
--- a/extra/pango/cairo/gadgets/gadgets.factor
+++ b/extra/pango/cairo/gadgets/gadgets.factor
@@ -44,15 +44,21 @@ M: pango-gadget dim>> ( gadget -- dim )
 
 M: pango-gadget graft* ( gadget -- ) [ 1+ ] refcount-change ;
 
-M: pango-gadget ungraft* ( gadget -- ) [ 1- ] refcount-change ;
+: release-texture ( gadget -- )
+    cache-key textures get delete-at* [ delete-texture ] [ drop ] if ;
+
+M: pango-gadget ungraft* ( gadget -- )
+    dup [ 1- ] refcount-change
+    dup cache-key refcounts get at
+    zero? [ release-texture ] [ drop ] if ;
 
 M: pango-gadget render* ( gadget -- ) 
-    [ gen-texture ] [ cache-key textures get set-at ]
-    [ call-next-method ] tri ;
+    [ gen-texture ] [ cache-key textures get set-at ] bi
+    call-next-method ;
 
 M: pango-gadget tex>> ( gadget -- texture )
     dup cache-key textures get at 
-    [ ] [ render* tex>> ] ?if ;
+    [ nip ] [ dup render* tex>> ] if* ;
 
 USE: ui.gadgets.panes
 : hello "Sans 50" "hello" <pango-gadget> gadget. ;