From 79a120d770a928b52a330c461054f75abfe6aca8 Mon Sep 17 00:00:00 2001 From: Matthew Willis 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" gadget. ; -- 2.34.1