aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Patches/EmPatchState.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcShared/Patches/EmPatchState.h')
-rw-r--r--SrcShared/Patches/EmPatchState.h264
1 files changed, 264 insertions, 0 deletions
diff --git a/SrcShared/Patches/EmPatchState.h b/SrcShared/Patches/EmPatchState.h
new file mode 100644
index 0000000..1c8fa2d
--- /dev/null
+++ b/SrcShared/Patches/EmPatchState.h
@@ -0,0 +1,264 @@
+/* -*- mode: C++; tab-width: 4 -*- */
+/* ===================================================================== *\
+ Copyright (c) 1998-2001 Palm, Inc. or its subsidiaries.
+ Copyright (c) 2001 PocketPyro, Inc.
+ All rights reserved.
+
+ This file is part of the Palm OS Emulator.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+\* ===================================================================== */
+
+#ifndef EmPatchState_h
+#define EmPatchState_h
+
+#include "ChunkFile.h"
+#include "EmPalmHeap.h"
+#include "EmPatchModuleTypes.h"
+#include "PreferenceMgr.h" // PrefKeyType
+
+#include <vector>
+#include <map>
+
+
+const UInt32 kOSUndeterminedVersion = ~0;
+
+
+typedef map<emuptr, EmPalmHeap*> EmHeapMap;
+
+
+
+// Structure used to hold information about the currently
+// running Palm OS application (as recorded when SysAppStartup
+// is called).
+
+struct EmuAppInfo
+{
+ Int16 fCmd; // launch code
+ DmOpenRef fDB;
+ UInt16 fCardNo;
+ LocalID fDBID;
+ UInt16 fMemOwnerID;
+ emuptr fStackP;
+ emuptr fStackEndP;
+ long fStackSize;
+ char fName[dmDBNameLength];
+ char fVersion[256]; // <gulp> I hope this is big enough...
+};
+
+typedef vector<EmuAppInfo> EmuAppInfoList;
+
+
+// Structure used to keep track of the context in which
+// memory chunks were allocated.
+
+struct EmTrackedChunk
+{
+ emuptr ptr;
+ bool isHandle;
+ EmStackFrameList stackCrawl;
+};
+
+typedef list<EmTrackedChunk> EmTrackedChunkList;
+
+
+struct EmPatchStateData
+{
+ public:
+ EmPatchStateData () :
+ fUIInitialized (false),
+ fUIReset (false),
+
+ fEvtGetEventCalled (false),
+ fAutoAcceptBeamDialogs (false),
+ fTimeToQuit (false),
+
+ fLastEvtTrap (0),
+ fOSVersion (0),
+ fEncoding (0),
+
+ fSysBinarySearchCount (0),
+
+ fQuitAppCardNo (0),
+ fQuitAppDbID (0),
+ fNextAppCardNo (0),
+ fNextAppDbID (0),
+
+ fHeapInitialized (false),
+ fMemMgrCount (0),
+ fMemSemaphoreCount (0),
+ fMemSemaphoreReserveTime (0),
+ fResizeOrigSize (0),
+ fHeapID (0)
+ {
+ }
+
+ bool fUIInitialized;
+ bool fUIReset;
+ bool fEvtGetEventCalled;
+ bool fAutoAcceptBeamDialogs;
+ bool fTimeToQuit;
+
+ uint16 fLastEvtTrap;
+ uint32 fOSVersion;
+ uint32 fEncoding;
+
+ long fSysBinarySearchCount;
+
+ uint16 fQuitAppCardNo;
+ LocalID fQuitAppDbID;
+ uint16 fNextAppCardNo;
+ LocalID fNextAppDbID;
+
+ EmuAppInfoList fCurAppInfo;
+
+ bool fHeapInitialized;
+
+ long fMemMgrCount;
+ Bool fMemMgrLeaks;
+ long fMemSemaphoreCount;
+ unsigned long fMemSemaphoreReserveTime;
+
+ uint32 fResizeOrigSize;
+ uint16 fHeapID;
+
+ EmHeapMap fRememberedHeaps;
+
+ EmTrackedChunkList fTrackedChunks;
+};
+
+
+
+class EmPatchState
+{
+ public:
+ static Err Initialize (void);
+ static Err Dispose (void);
+ static Err Reset (void);
+
+ enum PersistencePhase
+ {
+ PSPersistAll, // save/load all
+ PSPersistStep1, // Backward compatability step 1
+ PSPersistStep2 // Backward compatability step 2
+ };
+
+ static Err Save (EmStreamChunk &s, long version = 1, PersistencePhase pass = PSPersistAll);
+ static Err Load (EmStreamChunk &s, long version = 1, PersistencePhase pass = PSPersistAll);
+
+ static Err SaveCurAppInfo (EmStreamChunk &s);
+ static Err LoadCurAppInfo (EmStreamChunk &s);
+
+ static uint16 GetLastEvtTrap (void);
+ static EmuAppInfo GetCurrentAppInfo (void);
+ static EmuAppInfo GetRootAppInfo (void);
+
+
+ static Err AddAppInfo (EmuAppInfo &newAppInfo);
+ static Err RemoveCurAppInfo (void);
+
+ static Err SetLastEvtTrap (uint16 lastEvtTrap);
+ static Err SetEvtGetEventCalled (bool wasCalled);
+
+ static Err SetQuitApp (UInt16 cardNo, LocalID dbID);
+ static void SetTimeToQuit (void);
+
+ static void MemMgrLeaksPrefsChanged (PrefKeyType, void*);
+
+ static Err CollectCurrentAppInfo (emuptr appInfoP, EmuAppInfo &newAppInfo);
+
+
+ static UInt32 OSVersion (void);
+ static void SetOSVersion (UInt32 version);
+ static UInt32 OSMajorMinorVersion (void);
+ static UInt32 OSMajorVersion (void);
+ static UInt32 OSMinorVersion (void);
+ static void SetSwitchApp (UInt16 cardNo, LocalID dbID);
+ static Bool DatabaseInfoHasStackInfo(void);
+ static Bool HasWellBehavedMemSemaphoreUsage (void);
+
+
+ // Bugs fixed in 3.0.
+ static Bool HasFindShowResultsBug (void);
+ static Bool HasSysBinarySearchBug (void);
+
+ // Bugs fixed in 3.1
+ static Bool HasGrfProcessStrokeBug (void);
+ static Bool HasMenuHandleEventBug (void);
+
+ // Bugs fixed in 3.2
+ static Bool HasBackspaceCharBug (void);
+ static Bool HasDeletedStackBug (void);
+ static Bool HasFindSaveFindStrBug (void);
+ static Bool HasFldDeleteBug (void);
+ static Bool HasFntDefineFontBug (void);
+ static Bool HasNetPrvTaskMainBug (void);
+ static Bool HasNetPrvSettingSetBug (void);
+
+ // Bugs fixed in 3.3
+ static Bool HasECValidateFieldBug (void);
+
+ // Bugs fixed in 3.5
+ static Bool HasConvertDepth1To2BWBug(void);
+
+ // Bugs fixed in 4.0
+ static Bool HasSelectItemBug (void);
+ static Bool HasSyncNotifyBug (void);
+
+ // Bugs fixed in ???
+ static Bool HasPrvDrawSliderControlBug (void);
+
+
+ static Bool GetAutoAcceptBeamDialogs (void);
+ static Bool AutoAcceptBeamDialogs (Bool newState);
+ static UInt16 GetROMCharEncoding (void);
+ static Bool EvtGetEventCalled (void);
+ static Bool IsInSysBinarySearch (void);
+ static void EnterSysBinarySearch (void);
+ static void ExitSysBinarySearch (void);
+ static uint16 GetQuitAppCardNo (void);
+ static LocalID GetQuitAppDbID (void);
+ static void SetEncoding (uint32 encoding);
+
+ static Bool IsPCInMemMgr (void);
+ static void EnterMemMgr (const char* fnName);
+ static void ExitMemMgr (const char* fnName);
+ static Bool UIInitialized (void);
+
+ static void SetUIInitialized (Bool value = true);
+ static void SetUIReset (Bool value = true);
+ static void SetHeapInitialized (Bool value = true);
+
+ static Bool UIReset (void);
+ static Bool HeapInitialized (void);
+
+ // inline functions
+
+ static uint16 GetNextAppCardNo (void)
+ {
+ return fgData.fNextAppCardNo;
+ }
+
+ static LocalID GetNextAppDbID (void)
+ {
+ return fgData.fNextAppDbID;
+ }
+
+ static void SetNextAppCardNo (uint16 cardno)
+ {
+ fgData.fNextAppCardNo = cardno;
+ }
+
+ static void SetNextAppDbID (LocalID id)
+ {
+ fgData.fNextAppDbID = id;
+ }
+
+ public:
+ static EmPatchStateData fgData;
+};
+
+#endif // EmPatchState_h