<font face="verdana,sans-serif">I would be running the GC manually at key points to make sure it gets cleaned up. Mainly, before any scene changes when basically everything gets thrown out anyways.<br></font><br><div class="gmail_quote">

On Mon, Feb 6, 2012 at 10:49 PM, Ben Lippmeier <span dir="ltr">&lt;<a href="mailto:benl@ouroborus.net">benl@ouroborus.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div style="word-wrap:break-word"><div class="im"><br><div><div>On 07/02/2012, at 2:40 PM, Clark Gaebel wrote:</div><br><blockquote type="cite"><font face="verdana,sans-serif">Awesome. Thanks!<br><br>As a follow up question, how do I add a finalizer to a normal variable? OpenGL returns an integer handle to your texture in graphics memory, and you have to call deleteObjectNames on it. Is there any way to have this automatically run once we lose all references to this variable (and all copies)?<br>

</font></blockquote></div><br></div><div>I don&#39;t know. I&#39;ve only used ForeignPtrs with finalisers before [1].</div><div><br></div><div>One problem with these finalisers is that GHC provides no guarantees on when they will be run. It might be just before the program exits, instead of when the pointer actually becomes unreachable. Because texture memory is a scarce resource, I wouldn&#39;t want to rely on a finaliser to free it -- though I suppose this depends on what you&#39;re doing.</div>

<div><br></div><div>Ben.</div><div><br></div><div>[1] <a href="http://www.haskell.org/ghc/docs/latest/html/libraries/haskell2010-1.1.0.1/Foreign-ForeignPtr.html" target="_blank">http://www.haskell.org/ghc/docs/latest/html/libraries/haskell2010-1.1.0.1/Foreign-ForeignPtr.html</a></div>

<div><br></div><div><br></div></div></blockquote></div><br>