This makes the cached surface to only be ordered removed if it actually exists:

diff -urN lispbuilder-new/trunk/lispbuilder-sdl-ttf/sdl-ttf/font.lisp 
lispbuilder-ultranew/trunk/lispbuilder-sdl-ttf/sdl-ttf/font.lisp
--- lispbuilder-new/trunk/lispbuilder-sdl-ttf/sdl-ttf/font.lisp 2007-02-02 
22:51:51.000000000 +0300
+++ lispbuilder-ultranew/trunk/lispbuilder-sdl-ttf/sdl-ttf/font.lisp    
2007-02-03 04:12:44.000000000 +0300
@@ -41,6 +41,7 @@
   "Free's the resources used by FONT. 
 Closes the SDL_Font object. Explicitely free's the FONT's cached surface."
   (sdl-ttf-cffi::ttf-close-font (fp-font font))
-  (sdl:free-surface (cached-surface font))
+  (when (cached-surface font)
+    (sdl:free-surface (cached-surface font)))
   #-clisp(cffi:cancel-finalization font)
-  )
\ No newline at end of file
+  )

This avoids freeing the surfaces just right before the CFFI finalizers
are to kick in, rushing into an empty place, angry, with heavy weapons:

diff -urN lispbuilder-new/trunk/lispbuilder-sdl-ttf/sdl-ttf/sdl-util-ttf.lisp 
lispbuilder-ultranew/trunk/lispbuilder-sdl-ttf/sdl-ttf/sdl-util-ttf.lisp
--- lispbuilder-new/trunk/lispbuilder-sdl-ttf/sdl-ttf/sdl-util-ttf.lisp 
2007-02-02 22:51:51.000000000 +0300
+++ lispbuilder-ultranew/trunk/lispbuilder-sdl-ttf/sdl-ttf/sdl-util-ttf.lisp    
2007-02-03 04:18:06.000000000 +0300
@@ -27,7 +27,6 @@
   `(unwind-protect
        (when (init-ttf)
          ,@body)
-     (close-font :font *default-font*)
      (quit-ttf)))
 
 (defmacro with-open-font ((font-name size &optional font-path) &body body)
@@ -47,9 +47,8 @@
   `(with-init ()
      (when (typep *default-font* 'font)
        (error "WITH-OPEN-FONT; *default-font* is already bound to a FONT."))
-     (when (initialise-font ,font-name ,size ,font-path)
+     (when (initialise-font ,font-name ,font-path ,size)
        ,@body
-       (close-font :font *default-font*)
        (setf *default-font* nil))))
 
 ;;; Functions


regards, Samium Gromoff
_______________________________________________
application-builder mailing list
[email protected]
http://www.lispniks.com/mailman/listinfo/application-builder

Reply via email to