Chicken SDL v0.3p1

A new release of chicken-sdl is available from our arch archive. You can download the egg file here.

Below is the relevant part of the changelog:

2004-12-01 13:18:11 GMT Tony Garnock-Jones <>   patch-10

      Incorporate changes suggested by Alex Shinn

    - (sdl-fill-rect) is now generic in the kind of colour it expects -
      either an unsigned integer, or an SDL_Color structure.

    - Added procedures (ttf-size-text!) and (ttf-size-utf8!).

2004-11-19 16:38:01 GMT Tony Garnock-Jones <>     patch-9

      Returned TTF_Fonts now have a NULL check

    Previously, calling (ttf-open-font) when the path specified was
    invalid in some way would result in the construction of a ttf-font
    structure with a pointer value of #f, and there was no way of checking
    the success or failure of (ttf-open-font) without explicitly calling
    (ttf-font-pointer), which is bad style.

    I've changed the foreign-type wrap procedure to check for a #f pointer
    before constructing the ttf-font structure. If the pointer is #f, the
    whole result is #f - otherwise a ttf-font structure is built as usual.

2004-11-15 12:09:04 GMT Tony Garnock-Jones <>   patch-8

      Replace timer functionality

    It is problematic supporting SDL_AddTimer and SDL_RemoveTimer from
    chicken, since they a) are implemented using setitimer(2) and b)
    involve callbacks from C to Scheme. Each would be fine on its own, but
    taken together they interfere with the main Scheme thread.

    As it happens, the SDL_WaitEvent function is implemented in terms of
    polling (!) for events, with a short delay if none present themselves
    - the usual pragmatic tradeoff for event-based systems on Unix-like
    machines - and so we will be doing no worse if we do a similar thing
    ourselves. Hence, I've written a Scheme-based timer library which
    integrates with SDL's event loop, calling SDL_Delay(10) when there's
    no work just like SDL_WaitEvent.

    This does of course mean that the user must now either use
    (sdl-wait-event!), which manages timeouts itself, or must instead
    somehow arrange for periodic calls to (sdl-process-timer-queue!).

    The timer library is implemented in timer.scm, and depends on a
    leftist-heap implementation from heap.scm. These two modules ought
    probably to be split out into eggs of their own, and distributed as
    part of some kind of general utility library for chicken. For now,
    they're (include)d directly into sdl.scm, to avoid needing to install
    more than one file for this extension.