[Scummvm-cvs-logs] SF.net SVN: scummvm: [20563] scummvm/trunk/backends/PalmOS/Src/missing

chrilith at users.sourceforge.net chrilith at users.sourceforge.net
Sat Feb 11 10:32:01 CET 2006


Revision: 20563
Author:   chrilith
Date:     2006-02-11 10:31:05 -0800 (Sat, 11 Feb 2006)
ViewCVS:  http://svn.sourceforge.net/scummvm?rev=20563&view=rev

Log Message:
-----------
- Get rid of MemGluePtrNew
- Fixed exit function in ARM mode
- Fixed C++ compilation

Modified Paths:
--------------
    scummvm/trunk/backends/PalmOS/Src/missing/_stdlib.cpp
    scummvm/trunk/backends/PalmOS/Src/missing/stdlib.h
Modified: scummvm/trunk/backends/PalmOS/Src/missing/_stdlib.cpp
===================================================================
--- scummvm/trunk/backends/PalmOS/Src/missing/_stdlib.cpp	2006-02-11 18:28:02 UTC (rev 20562)
+++ scummvm/trunk/backends/PalmOS/Src/missing/_stdlib.cpp	2006-02-11 18:31:05 UTC (rev 20563)
@@ -1,6 +1,7 @@
 /* ScummVM - Scumm Interpreter
  * Copyright (C) 2001  Ludvig Strigeus
  * Copyright (C) 2001-2006 The ScummVM project
+ * Copyright (C) 2002-2006 Chris Apers - PalmOS Backend
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -23,6 +24,9 @@
 
 #include <stdlib.h>
 
+#define memNewChunkFlagAllowLarge	0x1000 
+extern "C" SysAppInfoPtr SysGetAppInfo(SysAppInfoPtr *uiAppPP, SysAppInfoPtr *actionCodeAppPP) SYS_TRAP(sysTrapSysGetAppInfo);
+
 void *bsearch(const void *key, const void *base, UInt32 nmemb, UInt32 size, int (*compar)(const void *, const void *)) {
 #ifdef PALMOS_68K
 	Int32 position;
@@ -52,11 +56,30 @@
 	return val;
 }
 
+MemPtr __malloc(UInt32 size) {
+	MemPtr newP = NULL;
+
+	if (size <= 65000) {
+		newP = MemPtrNew(size);
+	} else {
+		SysAppInfoPtr appInfoP;
+		UInt16 ownerID;
+		UInt16 attr;
+
+		ownerID = ((SysAppInfoPtr)SysGetAppInfo(&appInfoP, &appInfoP))->memOwnerID; 
+		attr	= ownerID|memNewChunkFlagAllowLarge|memNewChunkFlagNonMovable;
+
+		newP = MemChunkNew(0, size, attr);
+	}
+
+	return newP;
+}
+
 MemPtr calloc(UInt32 nelem, UInt32 elsize) {
 	MemPtr newP;
-	UInt32 size = nelem*elsize;
+	UInt32 size = (nelem * elsize);
 
-	newP = MemGluePtrNew(size);
+	newP = malloc(size);	// was MemGluePtrNew
 
 	if (newP)
 		MemSet(newP,size,0);
@@ -71,18 +94,17 @@
 }
 
 MemPtr realloc(MemPtr oldP, UInt32 size) {
-	
 	if (oldP != NULL)
-		if (MemPtrResize(oldP,size) == 0)
+		if (MemPtrResize(oldP, size) == 0)
 			return oldP;
 
-	MemPtr	newP = MemPtrNew(size);
-	
-	if (oldP!=NULL)
-	{
+	MemPtr	newP = malloc(size);	// was MemPtrNew
+
+	if (oldP!=NULL) {
 		MemMove(newP,oldP,MemPtrSize(oldP));
 		MemPtrFree(oldP);
-	}	
+	}
+
 	return newP;
 }
 
@@ -90,12 +112,12 @@
 #define ERR_MAGIC	0xDADA
 
 void exit(Int16 status) {
-#ifdef PALMOS_68K
+#if (defined(PALMOS_ARM) && defined(COMPILE_ZODIAC))
+	SysEventType event;
+	event.eType = sysEventKeyDownEvent;
+#else
 	EventType event;
 	event.eType = keyDownEvent;
-#else
-	SysEventType event;
-	event.eType = sysEventKeyDownEvent;
 #endif
 	event.data.keyDown.chr = vchrLaunch;
 	event.data.keyDown.modifiers = commandKeyMask;

Modified: scummvm/trunk/backends/PalmOS/Src/missing/stdlib.h
===================================================================
--- scummvm/trunk/backends/PalmOS/Src/missing/stdlib.h	2006-02-11 18:28:02 UTC (rev 20562)
+++ scummvm/trunk/backends/PalmOS/Src/missing/stdlib.h	2006-02-11 18:31:05 UTC (rev 20563)
@@ -1,6 +1,7 @@
 /* ScummVM - Scumm Interpreter
  * Copyright (C) 2001  Ludvig Strigeus
  * Copyright (C) 2001-2006 The ScummVM project
+ * Copyright (C) 2002-2006 Chris Apers - PalmOS Backend
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -30,10 +31,18 @@
 #include "MemGlue.h"
 #endif
 
-#if defined(COMPILE_ZODIAC) && defined(PALMOS_ARM)
-#define MemGluePtrNew	MemPtrNew
+#ifdef __cplusplus
+extern "C" {
 #endif
 
+#if defined(COMPILE_ZODIAC)
+#	define malloc	MemPtrNew
+#elif defined(COMPILE_OS5) && defined(PALMOS_ARM)
+#	define malloc	__malloc
+#else
+#	define malloc	MemGluePtrNew
+#endif
+
 extern ErrJumpBuf stdlib_errJumpBuf;
 
 #define DO_EXIT( code ) \
@@ -42,13 +51,12 @@
 #define atoi				StrAToI
 #define atol				StrAToI
 #define abs(a)				((a) < 0 ? -(a) : (a))
-#define	malloc(a)			MemGluePtrNew(a)
 
 #ifdef PALMOS_68K
-#define qsort(a,b,c,d)		SysQSort((a), (b), (c), (CmpFuncPtr)(&d), 0);
+#	define qsort(a,b,c,d)		SysQSort((a), (b), (c), (CmpFuncPtr)(&d), 0);
 #else
-typedef  int 	(*_compare_function)(const void*, const void*);
-extern "C" void qsort(void * table_base, size_t num_members, size_t member_size, _compare_function compare_members);
+	typedef int (*_compare_function)(const void*, const void*);
+	void qsort(void * table_base, UInt32 num_members, UInt32 member_size, _compare_function compare_members);
 #endif
 
 #define rand()				SysRandom(0)
@@ -56,10 +64,15 @@
 #define strtoul(a,b,c)		((unsigned long)strtol(a,b,c))
 
 void	*bsearch	(const void *key, const void *base, UInt32 nmemb, UInt32 size, int (*compar)(const void *, const void *));
+MemPtr	__malloc	(UInt32);
 MemPtr	 calloc		(UInt32 nelem, UInt32 elsize);
 void	 exit		(Int16 status);
 Err		 free		(MemPtr memP);
 MemPtr	 realloc	(MemPtr oldP, UInt32 size);
 long	 strtol		(const char *s, char **endptr, int base);
 
+#ifdef __cplusplus
+}
 #endif
+
+#endif







More information about the Scummvm-git-logs mailing list