mac: Removed Carbon header include and custom allocator (just use malloc).
This commit is contained in:
parent
73070339a4
commit
0be0e3fd33
|
@ -7,78 +7,28 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define __PHYSICSFS_INTERNAL__
|
#define __PHYSICSFS_INTERNAL__
|
||||||
#include "physfs_platforms.h"
|
#include "physfs_internal.h"
|
||||||
|
|
||||||
#ifdef PHYSFS_PLATFORM_MACOSX
|
#ifdef PHYSFS_PLATFORM_MACOSX
|
||||||
|
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
|
|
||||||
#if !defined(PHYSFS_NO_CDROM_SUPPORT)
|
#if !defined(PHYSFS_NO_CDROM_SUPPORT)
|
||||||
#include <Carbon/Carbon.h> /* !!! FIXME */
|
#include <IOKit/IOKitLib.h>
|
||||||
#include <IOKit/storage/IOMedia.h>
|
#include <IOKit/storage/IOMedia.h>
|
||||||
#include <IOKit/storage/IOCDMedia.h>
|
#include <IOKit/storage/IOCDMedia.h>
|
||||||
#include <IOKit/storage/IODVDMedia.h>
|
#include <IOKit/storage/IODVDMedia.h>
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Seems to get defined in some system header... */
|
|
||||||
#ifdef Free
|
|
||||||
#undef Free
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "physfs_internal.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Wrap PHYSFS_Allocator in a CFAllocator... */
|
|
||||||
static CFAllocatorRef cfallocator = NULL;
|
|
||||||
|
|
||||||
static CFStringRef cfallocCopyDesc(const void *info)
|
|
||||||
{
|
|
||||||
return CFStringCreateWithCString(cfallocator, "PhysicsFS",
|
|
||||||
kCFStringEncodingASCII);
|
|
||||||
} /* cfallocCopyDesc */
|
|
||||||
|
|
||||||
|
|
||||||
static void *cfallocMalloc(CFIndex allocSize, CFOptionFlags hint, void *info)
|
|
||||||
{
|
|
||||||
return allocator.Malloc(allocSize);
|
|
||||||
} /* cfallocMalloc */
|
|
||||||
|
|
||||||
|
|
||||||
static void cfallocFree(void *ptr, void *info)
|
|
||||||
{
|
|
||||||
allocator.Free(ptr);
|
|
||||||
} /* cfallocFree */
|
|
||||||
|
|
||||||
|
|
||||||
static void *cfallocRealloc(void *ptr, CFIndex newsize,
|
|
||||||
CFOptionFlags hint, void *info)
|
|
||||||
{
|
|
||||||
if ((ptr == NULL) || (newsize <= 0))
|
|
||||||
return NULL; /* ADC docs say you should always return NULL here. */
|
|
||||||
return allocator.Realloc(ptr, newsize);
|
|
||||||
} /* cfallocRealloc */
|
|
||||||
|
|
||||||
|
|
||||||
int __PHYSFS_platformInit(void)
|
int __PHYSFS_platformInit(void)
|
||||||
{
|
{
|
||||||
/* set up a CFAllocator, so Carbon can use the physfs allocator, too. */
|
|
||||||
CFAllocatorContext ctx;
|
|
||||||
memset(&ctx, '\0', sizeof (ctx));
|
|
||||||
ctx.copyDescription = cfallocCopyDesc;
|
|
||||||
ctx.allocate = cfallocMalloc;
|
|
||||||
ctx.reallocate = cfallocRealloc;
|
|
||||||
ctx.deallocate = cfallocFree;
|
|
||||||
cfallocator = CFAllocatorCreate(kCFAllocatorUseContext, &ctx);
|
|
||||||
BAIL_IF(!cfallocator, PHYSFS_ERR_OUT_OF_MEMORY, 0);
|
|
||||||
return 1; /* success. */
|
return 1; /* success. */
|
||||||
} /* __PHYSFS_platformInit */
|
} /* __PHYSFS_platformInit */
|
||||||
|
|
||||||
|
|
||||||
int __PHYSFS_platformDeinit(void)
|
int __PHYSFS_platformDeinit(void)
|
||||||
{
|
{
|
||||||
CFRelease(cfallocator);
|
|
||||||
cfallocator = NULL;
|
|
||||||
return 1; /* always succeed. */
|
return 1; /* always succeed. */
|
||||||
} /* __PHYSFS_platformDeinit */
|
} /* __PHYSFS_platformDeinit */
|
||||||
|
|
||||||
|
@ -103,7 +53,7 @@ static int darwinIsWholeMedia(io_service_t service)
|
||||||
|
|
||||||
wholeMedia = IORegistryEntryCreateCFProperty(service,
|
wholeMedia = IORegistryEntryCreateCFProperty(service,
|
||||||
CFSTR(kIOMediaWholeKey),
|
CFSTR(kIOMediaWholeKey),
|
||||||
cfallocator, 0);
|
NULL, 0);
|
||||||
if (wholeMedia == NULL)
|
if (wholeMedia == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -239,7 +189,7 @@ char *__PHYSFS_platformCalcBaseDir(const char *argv0)
|
||||||
cfstr = CFURLCopyFileSystemPath(cfurl, kCFURLPOSIXPathStyle);
|
cfstr = CFURLCopyFileSystemPath(cfurl, kCFURLPOSIXPathStyle);
|
||||||
CFRelease(cfurl);
|
CFRelease(cfurl);
|
||||||
BAIL_IF(!cfstr, PHYSFS_ERR_OUT_OF_MEMORY, NULL);
|
BAIL_IF(!cfstr, PHYSFS_ERR_OUT_OF_MEMORY, NULL);
|
||||||
cfmutstr = CFStringCreateMutableCopy(cfallocator, 0, cfstr);
|
cfmutstr = CFStringCreateMutableCopy(NULL, 0, cfstr);
|
||||||
CFRelease(cfstr);
|
CFRelease(cfstr);
|
||||||
BAIL_IF(!cfmutstr, PHYSFS_ERR_OUT_OF_MEMORY, NULL);
|
BAIL_IF(!cfmutstr, PHYSFS_ERR_OUT_OF_MEMORY, NULL);
|
||||||
CFStringAppendCString(cfmutstr, "/", kCFStringEncodingUTF8);
|
CFStringAppendCString(cfmutstr, "/", kCFStringEncodingUTF8);
|
||||||
|
@ -263,61 +213,9 @@ char *__PHYSFS_platformCalcPrefDir(const char *org, const char *app)
|
||||||
} /* __PHYSFS_platformCalcPrefDir */
|
} /* __PHYSFS_platformCalcPrefDir */
|
||||||
|
|
||||||
|
|
||||||
/* Platform allocator uses default CFAllocator at PHYSFS_init() time. */
|
|
||||||
|
|
||||||
static CFAllocatorRef cfallocdef = NULL;
|
|
||||||
|
|
||||||
static int macosxAllocatorInit(void)
|
|
||||||
{
|
|
||||||
int retval = 0;
|
|
||||||
cfallocdef = CFAllocatorGetDefault();
|
|
||||||
retval = (cfallocdef != NULL);
|
|
||||||
if (retval)
|
|
||||||
CFRetain(cfallocdef);
|
|
||||||
return retval;
|
|
||||||
} /* macosxAllocatorInit */
|
|
||||||
|
|
||||||
|
|
||||||
static void macosxAllocatorDeinit(void)
|
|
||||||
{
|
|
||||||
if (cfallocdef != NULL)
|
|
||||||
{
|
|
||||||
CFRelease(cfallocdef);
|
|
||||||
cfallocdef = NULL;
|
|
||||||
} /* if */
|
|
||||||
} /* macosxAllocatorDeinit */
|
|
||||||
|
|
||||||
|
|
||||||
static void *macosxAllocatorMalloc(PHYSFS_uint64 s)
|
|
||||||
{
|
|
||||||
if (!__PHYSFS_ui64FitsAddressSpace(s))
|
|
||||||
BAIL(PHYSFS_ERR_OUT_OF_MEMORY, NULL);
|
|
||||||
return CFAllocatorAllocate(cfallocdef, (CFIndex) s, 0);
|
|
||||||
} /* macosxAllocatorMalloc */
|
|
||||||
|
|
||||||
|
|
||||||
static void *macosxAllocatorRealloc(void *ptr, PHYSFS_uint64 s)
|
|
||||||
{
|
|
||||||
if (!__PHYSFS_ui64FitsAddressSpace(s))
|
|
||||||
BAIL(PHYSFS_ERR_OUT_OF_MEMORY, NULL);
|
|
||||||
return CFAllocatorReallocate(cfallocdef, ptr, (CFIndex) s, 0);
|
|
||||||
} /* macosxAllocatorRealloc */
|
|
||||||
|
|
||||||
|
|
||||||
static void macosxAllocatorFree(void *ptr)
|
|
||||||
{
|
|
||||||
CFAllocatorDeallocate(cfallocdef, ptr);
|
|
||||||
} /* macosxAllocatorFree */
|
|
||||||
|
|
||||||
|
|
||||||
int __PHYSFS_platformSetDefaultAllocator(PHYSFS_Allocator *a)
|
int __PHYSFS_platformSetDefaultAllocator(PHYSFS_Allocator *a)
|
||||||
{
|
{
|
||||||
allocator.Init = macosxAllocatorInit;
|
return 0; /* just use malloc() and friends. */
|
||||||
allocator.Deinit = macosxAllocatorDeinit;
|
|
||||||
allocator.Malloc = macosxAllocatorMalloc;
|
|
||||||
allocator.Realloc = macosxAllocatorRealloc;
|
|
||||||
allocator.Free = macosxAllocatorFree;
|
|
||||||
return 1; /* return non-zero: we're supplying custom allocator. */
|
|
||||||
} /* __PHYSFS_platformSetDefaultAllocator */
|
} /* __PHYSFS_platformSetDefaultAllocator */
|
||||||
|
|
||||||
#endif /* PHYSFS_PLATFORM_MACOSX */
|
#endif /* PHYSFS_PLATFORM_MACOSX */
|
||||||
|
|
Loading…
Reference in New Issue