Justin discovered a bug in sdl_mixer that causes everything to crash when the 
mixer is initialized/uninitialized more than once in a Lisp session. So I've 
had to make some modifications to WITH-INIT to compensate for this.

I have added three functions, INITIALIZE-ON-STARTUP, QUIT-ON-EXIT and SDL-QUIT-
ON-EXIT.

(setf sdl::SDL-QUIT-ON-EXIT t) will cause SDL-QUIT to be called when WITH-INIT 
ends. 
(setf sdl::SDL-QUIT-ON-EXIT nil) will not call SDL-QUIT when WITH-INIT ends.

(sdl::INITIALIZE-ON-STARTUP sdl-cffi::sdl-init-video sdl-cffi::sdl-init-audio
 ...etc), lists the sub-systems of SDL that must be initialized by WITH-INIT, 
if not already initialized.

(sdl::QUIT-ON-EXIT sdl-cffi::sdl-init-video ...etc), lists the sub-systems of 
SDL that must be uninitialized by WITH-INIT, if not already uninitialized.

So if you want SDL to initialize video, audio, and the cdrom when starting but 
to only uninitialize the video when exiting then do the following:

(sdl::initialize-on-startup sdl-cffi::sdl-init-video 
                            sdl-cffi::sdl-init-audio
                            sdl-cffi::sdl-init-cdrom)
(sdl::quit-on-exit sdl-cffi::sdl-init-video)
(sdl::sdl-quit-on-exit nil)
(sdl::WITH-INIT ()
 ...
)

All of this is in lispbuilder-sdl/sdl/init.lisp

- Luke

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

Reply via email to