view README @ 1211:304d8dd6a989

To: sdl@libsdl.org From: Christian Walther <cwalther@gmx.ch> Date: Wed, 28 Dec 2005 12:13:20 +0100 Subject: [SDL] Fix for opening documents on Mac OS X < 10.4 The current code in SDLMain.m that transforms documents opened from the Finder into command-line arguments (introduced in revision 1.14, 2005-08-11) uses the methods -[NSString lengthOfBytesUsingEncoding:] and -[NSString getCString:maxLength:encoding:], which are only available in Mac OS X 10.4. Compiling this code on 10.3 produces warnings, and running it (i.e. starting an SDL application by opening a document) leads to weird behavior which I didn't investigate in detail ("*** -[NSCFString lengthOfBytesUsingEncoding:]: selector not recognized" is printed to the console log, and the SDL window never opens). The attached patch removes the offending calls and uses -[NSString UTF8String] instead, which is available everywhere. Tested on 10.3.9, and I see no reason why it shouldn't also work on 10.2 and 10.4. Two further comments: * The comment above the -[SDLMain application: openFile:] implementation says "You need to have a CFBundleDocumentsType section in your Info.plist to get this message, apparently." This is not the case in my experience - it worked just fine with a hand-built bare-bones application consisting only of Test.app/Contents/MacOS/test, without any Info.plist (although you have to press the option and command keys for such an application to accept a dragged file). * I took the liberty of cleaning up another area of SDLMain.m: I changed "CustomApplicationMain (argc, argv)" to "CustomApplicationMain (int argc, char **argv)". This avoids the "type of `argv' defaults to `int'" warnings, and I'm not sure if leaving out the types could cause problems on platforms where an int and a char** aren't of the same size. -Christian
author Ryan C. Gordon <icculus@icculus.org>
date Sun, 01 Jan 2006 23:45:52 +0000
parents 61b7f5eed0e8
children ca3718c215af
line wrap: on
line source


                         Simple DirectMedia Layer

                                  (SDL)

                                Version 1.2

---
http://www.libsdl.org/

This is the Simple DirectMedia Layer, a general API that provides low
level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL,
and 2D framebuffer across multiple platforms.

SDL is written in C, but works with C++ natively, and has bindings to
several other languages, including Ada, C#, Eiffel, Java, Lua, ML,
Objective C, Perl, PHP, Pike, Python, and Ruby.

The current version supports Linux, Windows, BeOS, MacOS, MacOS X,
FreeBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX.  The code contains
support for Windows CE, AmigaOS, Dreamcast, Atari, NetBSD, AIX, OSF/Tru64,
RISC OS, and SymbianOS, but these are not officially supported.

This library is distributed under GNU LGPL version 2, which can be
found in the file  "COPYING".  This license allows you to use SDL
freely in commercial programs as long as you link with the dynamic
library.

The best way to learn how to use SDL is to check out the header files in
the "include" subdirectory and the programs in the "test" subdirectory.
The header files and test programs are well commented and always up to date.
More documentation is available in HTML format in "./docs/index.html"

The test programs in the "test" subdirectory are in the public domain.

Frequently asked questions are answered online:
	http://www.libsdl.org/faq.php

If you need help with the library, or just want to discuss SDL related
issues, you can join the developers mailing list:
	http://www.libsdl.org/mailing-list.php

Enjoy!
	Sam Lantinga				(slouken@libsdl.org)