Update external libraries source changes documentation to include the recent changes to gnustep-base-1_20.dll on Windows.
This commit is contained in:
parent
7f5824b8e0
commit
54e676450a
@ -3,7 +3,7 @@ Modifications to external libraries' source code for running Oolite
|
||||
|
||||
The various ports of Oolite are using a number of external libraries for graphics, sound, input and event handling. Throughout development, certain changes to the source code of these libraries have been deemed necessary, either to enable Oolite to run in a more efficient and independent manner, or simply to fix issues that occurred as a result of these external libraries themselves. Of these libraries, the ones that have to be rebuilt specifically for Oolite, together with the main reasons/areas changed for this reason are:
|
||||
|
||||
1. gnustep-base v1.20.1 (Windows) - bug in NSInteger definition, change to dictionary format of NSUserDefaults, fix for integer truncation of integers to 32-bit when parsing XML plists (bug #32495 on the gnustep.org bugtracker) and changes to facilitate native Obj-C exceptions support.
|
||||
1. gnustep-base v1.20.1 (Windows) - bug in NSInteger definition, change to dictionary format of NSUserDefaults, fix for integer truncation of integers to 32-bit when parsing XML plists (bug #32495 on the gnustep.org bugtracker) and changes to facilitate native Obj-C exceptions support. Also, fix bug in the stack grabbing code at NSDebug.m so that correct stack traces can be obtained also on Windows XP and later.
|
||||
2. SDL v1.2.13 - (Windows) window resizing issues, backported fix for setting gamma crash.
|
||||
3. SpiderMonkey v1.85 (all platforms) - certain JS macro definitions required by Oolite not guaranteed or non-existent in standard library.
|
||||
4. eSpeak v1.43.03 (Windows) - Special build of the Windows speech synthesis libespeak.dll to enable asynchronous playback. Also, defaults the eSpeak data directory to Resources/espeak-data.
|
||||
@ -42,6 +42,40 @@ result = [[NSNumber alloc] initWithLong: atol(buf)];
|
||||
to
|
||||
result = [[NSNumber alloc] initWithLongLong: atoll(buf)];
|
||||
|
||||
- The stack backtrace grabbing code in NSDebug.m works for Linux but fails on Windows. The GSPrivateStackAddresses function has been modified to use the WinAPI CaptureStackBacktrace method, so that it returns a correct stack backtrace also on Windows (64-bit only, 32-bit version not modified because we want to keep backwards compatibility as much as possible). The modified function is as follows:
|
||||
NSMutableArray * GSPrivateStackAddresses(void)
|
||||
{
|
||||
NSMutableArray *stack;
|
||||
NSAutoreleasePool *pool;
|
||||
|
||||
#if HAVE_BACKTRACE
|
||||
void *addresses[1024];
|
||||
int n = backtrace(addresses, 1024);
|
||||
int i;
|
||||
|
||||
stack = [NSMutableArray arrayWithCapacity: n];
|
||||
pool = [NSAutoreleasePool new];
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
[stack addObject: [NSValue valueWithPointer: addresses[i]]];
|
||||
}
|
||||
#else // Windows code here
|
||||
unsigned i;
|
||||
const int kMaxCallers = 62;
|
||||
void* callers[kMaxCallers];
|
||||
unsigned n = CaptureStackBackTrace(0, kMaxCallers, callers, NULL);
|
||||
|
||||
stack = [NSMutableArray arrayWithCapacity: n];
|
||||
pool = [NSAutoreleasePool new];
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
[stack addObject: [NSValue valueWithPointer: callers[i]]];
|
||||
}
|
||||
#endif // HAVE_BACKTRACE
|
||||
RELEASE(pool);
|
||||
return stack;
|
||||
}
|
||||
|
||||
- The GNUstep objc-1.dll runtime has been rebuilt with native Obj-C exception support. To do this on Windows, the patch which provides the void (*_objc_unexpected_exception) (id exception) callback hook to the runtime is required for versions of gcc older than 4.4.0. The patch can be downloaded from http://gcc.gnu.org/bugzilla/attachment.cgi?id=17365. Also, the gcc source header unwind-pe.h must be visible to exception.c in order for the build of libobjc to succeed.
|
||||
|
||||
The full source code of GNUstep 1.20.1 is available from
|
||||
|
Loading…
x
Reference in New Issue
Block a user