fix bugs and also destroy textures whose refcounts are 0 on ungraft*

db4
Matthew Willis 2008-06-02 16:31:32 -07:00
parent b5279bde62
commit 79a120d770
1 changed files with 10 additions and 4 deletions

View File

@ -44,15 +44,21 @@ M: pango-gadget dim>> ( gadget -- dim )
M: pango-gadget graft* ( gadget -- ) [ 1+ ] refcount-change ; 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 -- ) M: pango-gadget render* ( gadget -- )
[ gen-texture ] [ cache-key textures get set-at ] [ gen-texture ] [ cache-key textures get set-at ] bi
[ call-next-method ] tri ; call-next-method ;
M: pango-gadget tex>> ( gadget -- texture ) M: pango-gadget tex>> ( gadget -- texture )
dup cache-key textures get at dup cache-key textures get at
[ ] [ render* tex>> ] ?if ; [ nip ] [ dup render* tex>> ] if* ;
USE: ui.gadgets.panes USE: ui.gadgets.panes
: hello "Sans 50" "hello" <pango-gadget> gadget. ; : hello "Sans 50" "hello" <pango-gadget> gadget. ;