Opened 12 years ago
Closed 11 years ago
#995 closed defect (fixed)
SDL on OSX, How does it work ?
Reported by: | paines | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | someday |
Component: | unknown | Version: | 4.8.x |
Keywords: | sdl osx | Cc: | |
Estimated difficulty: |
Description
I compiled and installed the SDL egg using libsdl-framework via macports.
When now compiling and running a Chicken App or using csi, it will segfault with an NSInternalInconsistencyException exception.
Some sources state that SDLmain / SDL_Init must be called at first like this:
(cond-expand
(compile-sdl
(declare (foreign-declare "#include \"SDL.h\"\n"))
(foreign-code "SDL_Init(SDL_INIT_EVERYTHING);"))
(else
(sdl-init sdl_init_everything)))
.... more code
and then compile it with csc -feature compile-sdl file.scm under OSX, which still gives the same exception.
One more suggestion is to use the parameter
SDL_VIDEODRIVER=x11 ./myOSXBinary
but this won't produce a working GFX context.
I am not sure if this is a real bug, or I am just not using SDL correctly under Chicken + OSX. I hope someone can clear things up.
Change History (3)
comment:1 follow-up: 2 Changed 12 years ago by
comment:3 Changed 11 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
The solution is to Init SDL under OSX is like this:
(declare (foreign-declare "#include<SDL/SDL.h>\n"))
(foreign-code "SDL_Init(SDL_INIT_EVERYTHING);")
and compile the whole thing via
csc yourApp.scm -lSDLmain -framework Cocoa -framework Foundation
One thing to get things working is (at least this worked for me under OSX 10.8.2 and macports):
sudo port install xorg
sudo port install xterm
Then start Xorg via Mission Control. X icon will appear in the dock. Right click on the X and then start a Terminal.
From here you can do e.g.
SDL_VIDEODRIVER=x11 csi and develop interactively
or compile your app and start it with SDL_VIDEODRIVER=x11 ./yourBinary.
Isn't there an easier way ? The resulting binary isn't shippable or shareable among others.