Self Wright

Tag: osx

SDL on OSX

(ql:quickload 'lispbuilder-sdl) worked right away on an ubuntu box, but failed (couldn’t find `cocoahelper) when I tried the sam on my Macbook.

The fix is to install SDL, then go to ~/quicklisp/dists/quicklisp/software/lispbuilder-20140113-svn/lispbuilder-sdl/cocoahelper and type make. After this, the ql:quickload form succeeds.

However, the same dummy blank screen test program that worked fine on the linux box doesn’t seem to work anymore:

[code lang=text]
(defpackage :simple-sdl
(:use :common-lisp
:lispbuilder-sdl))

(in-package :simple-sdl)

(defun main-screen ()
(sdl:with-init ()
(sdl:window 300 300
:title-caption "Simple SDL"
:icon-caption "Simple SDL")
(sdl:with-events ()
(:quit-event () t)
(:key-down-event ()
(sdl:push-quit-event)))))
[/code]

It fails with this backtrace:

[code lang=text]
Backtrace:
0: ("bogus stack frame")
1: ("foreign function: CGSScanconverterRenderRGBMask")
2: ("foreign function: create_rgb_bitmap")
3: ("foreign function: CGGlyphBitmapCreateWithPath_32")
4: ("foreign function: CGFontCreateGlyphBitmap")
5: ("foreign function: _ZN14CGGlyphBuilder22create_missing_bitmapsEPK17CGGlyphIdentifiermPPK13CGGlyphBitmap")
6: ("foreign function: render_glyphs")
7: ("foreign function: draw_glyph_bitmaps")
8: ("foreign function: ripc_DrawGlyphs")
9: ("foreign function: draw_glyphs")
10: ("foreign function: CTFontDrawGlyphsAtPositions")
11: ("foreign function: -[CUITextEffectStack drawGlyphs:inContext:usingFont:atPositions:count:lineHeight:inBounds:atScale:]")
12: ("foreign function: -[CUICatalog drawGlyphs:atPositions:inContext:withFont:count:stylePresetName:styleConfiguration:foregroundColor:]")
13: ("foreign function: -[NSLineFragmentRenderingContext drawAtPoint:inContext:]")
14: ("foreign function: _NSStringDrawingCore")
15: ("foreign function: _NSDrawTextCell")
16: ("foreign function: -[NSTitledFrame _drawTitleStringIn:withColor:]")
17: ("foreign function: -[NSThemeFrame _drawTitleStringInClip:]")
18: ("foreign function: -[NSThemeFrame drawFrame:]")
[/code]

Just when I was getting excited about it … so what other platform-independent Lisp GUI should I use 🙁 ?

BTW, while we’re knocking this (unfairly, of course), I should point out it doesn’t support SDL 2.x

I then stumbled on this library which seemed better maintained, and modified my example:

[code lang=text]
(defun main-screen ()
(sdl2:with-init (:everything)
(sdl2:with-window (win :w 300 :h 300
:title "Simple SDL")
(sdl2:with-event-loop (:method :poll)
(:quit () t)
(:keydown ()
(sdl2:push-quit-event))))))
[/code]

Now a window did get created, but it didn’t play well with OSX (it wasn’t a “window” so much as a blank square of real estate on the screen, with a spinning beachball and no response).

So … the search for a basic simple drawing facility continues 🙁

Getting Started on OSX

Here’s what I did, though perhaps a better order of steps exists:

  • Downloaded Emacs for OSX

  • Downloaded ClozureCL from the Mac App Store.

  • Downloaded Quicklisp

  • Ran ClozureCL, then “File -> Load File …”, and selected quicklisp.lisp downloaded earlier.

  • Ran (quicklisp-quickstart:install)

  • Ran (ql:add-to-init-file) to make sure I don’t have to repeat this step again

  • Ran (ql:quickload :quicklisp-slime-helper). This downloaded SLIME and told me what to add to my .emacs:

`(load (expand-file-name “~/quicklisp/slime-helper.el”))`

  • Made a useful symlink:

  `ln -s /Applications/Clozure CL.app/Contents/MacOS/dx86cl64 ~/bin/ccl`

  • Added a reference to this in my .emacs:

`(setq inferior-lisp-program “~/bin/ccl”)`

  • Ran emacs, M-x slime works !

(or as the prompt says, “Happy hacking!”)

 

Powered by WordPress & Theme by Anders Norén