[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