[Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src args.cpp,1.2,1.3 args.h,1.1,1.2

Chris Apers chrilith at users.sourceforge.net
Wed Oct 12 13:19:04 CEST 2005


Update of /cvsroot/scummvm/scummvm/backends/PalmOS/Src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29848

Modified Files:
	args.cpp args.h 
Log Message:
Ease 68K/ARM communication

Index: args.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/args.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- args.cpp	30 Jul 2005 21:10:48 -0000	1.2
+++ args.cpp	12 Oct 2005 20:17:13 -0000	1.3
@@ -1,9 +1,19 @@
 #include <PalmOS.h>
+#include "palmdefs.h"
 #include "args.h"
+#include "pace.h"
 
 Char **ArgsInit() {
-	MemHandle argvH = MemHandleNew(MAX_ARG * sizeof(Char *));
-	Char **argvP = (Char **)MemHandleLock(argvH);
+	// first 4 bytes keep the real address of the chunk
+	MemHandle argvH = MemHandleNew(sizeof(Char *) + (MAX_ARG * sizeof(Char **) + 2));
+	// real addr
+	Char *lockP = (Char *)MemHandleLock(argvH);
+	// 4byte aligned
+	Char **argvP = (Char **)ALIGN_4BYTE(lockP);
+	// save real addr
+	argvP[0] = lockP;
+	// initial position
+	argvP++;
 
 	for(UInt8 count = 0; count < MAX_ARG; count++)
 		argvP[count] = NULL;
@@ -45,7 +55,8 @@
 			MemHandleFree(oldH);
 		}
 
-	oldH = MemPtrRecoverHandle(argvP);
+	argvP--;
+	oldH = MemPtrRecoverHandle(argvP[0]);
 	MemHandleUnlock(oldH);
 	MemHandleFree(oldH);
 }
@@ -60,10 +71,35 @@
 		if (argvP[count]) {
 			oldH = MemPtrRecoverHandle(argvP[count]);
 			MemHandleSetOwner(oldH, owner);
-//			MemPtrSetOwner(argvP[count], 0);
 		}
 
-	oldH = MemPtrRecoverHandle(argvP);
+	argvP--;
+	oldH = MemPtrRecoverHandle(argvP[0]);
 	MemHandleSetOwner(oldH, owner);
-//	MemPtrSetOwner(argvP, 0);
+}
+
+void ArgsExportInit(Char **argvP, UInt32 countArg, Boolean arm) {
+	if (arm) {
+		for(UInt8 count = 0; count < MAX_ARG; count++)
+			if (argvP[count])
+				argvP[count] = (Char *)ByteSwap32(argvP[count]);
+	}
+
+	FtrSet(appFileCreator, ftrArgsData , (UInt32)argvP);
+	FtrSet(appFileCreator, ftrArgsCount, (UInt32)countArg);
+}
+
+void ArgsExportRelease(Boolean arm) {
+	if (arm) {
+		Char **argvP;
+		Err e = FtrGet(appFileCreator, ftrArgsData, (UInt32 *)&argvP);
+
+		if (argvP)
+			for(UInt8 count = 0; count < MAX_ARG; count++)
+				if (argvP[count])
+					argvP[count] = (Char *)ByteSwap32(argvP[count]);
+	}
+
+	FtrUnregister(appFileCreator, ftrArgsCount);
+	FtrUnregister(appFileCreator, ftrArgsData);
 }

Index: args.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/args.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- args.h	9 Nov 2004 10:45:47 -0000	1.1
+++ args.h	12 Oct 2005 20:17:13 -0000	1.2
@@ -3,9 +3,16 @@
 
 #define MAX_ARG	25
 
+#define ftrArgsData		1300
+#define ftrArgsCount	1301
+#define ftrVars			1302
+
 Char **ArgsInit();
 void ArgsAdd(Char **argvP, const Char *argP, const Char *parmP, UInt8 *countArgP);
 void ArgsFree(Char **argvP);
 void ArgsSetOwner(Char **argvP, UInt16 owner);
 
-#endif
\ No newline at end of file
+void ArgsExportInit(Char **argvP, UInt32 countArg, Boolean arm);
+void ArgsExportRelease(Boolean arm);
+
+#endif





More information about the Scummvm-git-logs mailing list