diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 7f508863..a4c38ee4 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -4069,7 +4069,7 @@ fn_800BD7A0 = .text:0x800BD7A0; // type:function size:0x74 fn_800BD820 = .text:0x800BD820; // type:function size:0x8 fn_800BD830 = .text:0x800BD830; // type:function size:0x78 fn_800BD8B0 = .text:0x800BD8B0; // type:function size:0x10 -doNothing__16SceneflagManagerFv = .text:0x800BD8C0; // type:function size:0x4 +init__16SceneflagManagerFv = .text:0x800BD8C0; // type:function size:0x4 setShouldCommit__16SceneflagManagerFUs = .text:0x800BD8D0; // type:function size:0xC __ct__16SceneflagManagerFv = .text:0x800BD8E0; // type:function size:0x64 isNotTempOrZoneFlag__16SceneflagManagerFUs = .text:0x800BD950; // type:function size:0xC @@ -4161,22 +4161,22 @@ onDirty__20ItemStoryManagerBaseFv = .text:0x800BF630; // type:function size:0x4 FUN_800bf640__20ItemStoryManagerBaseFUs = .text:0x800BF640; // type:function size:0x10 doCommit_Priv__20ItemStoryManagerBaseFv = .text:0x800BF650; // type:function size:0x40 FUN_800bf690__20ItemStoryManagerBaseFv = .text:0x800BF690; // type:function size:0x4 -__ct__16StoryFlagManagerFv = .text:0x800BF6A0; // type:function size:0x5C -copyFlagsFromSave__16StoryFlagManagerFv = .text:0x800BF700; // type:function size:0x3C -setupUnkFlagsStuff__16StoryFlagManagerFv = .text:0x800BF740; // type:function size:0x10 -onDirty__16StoryFlagManagerFv = .text:0x800BF750; // type:function size:0x4 -commit__16StoryFlagManagerFv = .text:0x800BF760; // type:function size:0x4C -unsetFlag__16StoryFlagManagerFUs = .text:0x800BF7B0; // type:function size:0x4 -__ct__15ItemFlagManagerFv = .text:0x800BF7C0; // type:function size:0x5C -copyFlagsFromSave__15ItemFlagManagerFv = .text:0x800BF820; // type:function size:0x3C -setupUnkFlagsStuff__15ItemFlagManagerFv = .text:0x800BF860; // type:function size:0x10 -onDirty__15ItemFlagManagerFv = .text:0x800BF870; // type:function size:0x4 -commit__15ItemFlagManagerFv = .text:0x800BF880; // type:function size:0x4C -copyFromSave__18DungeonflagManagerFUs = .text:0x800BF8D0; // type:function size:0x54 +__ct__16StoryflagManagerFv = .text:0x800BF6A0; // type:function size:0x5C +copyFlagsFromSave__16StoryflagManagerFv = .text:0x800BF700; // type:function size:0x3C +setupUnkFlagsStuff__16StoryflagManagerFv = .text:0x800BF740; // type:function size:0x10 +onDirty__16StoryflagManagerFv = .text:0x800BF750; // type:function size:0x4 +commit__16StoryflagManagerFv = .text:0x800BF760; // type:function size:0x4C +unsetFlag__16StoryflagManagerFUs = .text:0x800BF7B0; // type:function size:0x4 +__ct__15ItemflagManagerFv = .text:0x800BF7C0; // type:function size:0x5C +copyFlagsFromSave__15ItemflagManagerFv = .text:0x800BF820; // type:function size:0x3C +setupUnkFlagsStuff__15ItemflagManagerFv = .text:0x800BF860; // type:function size:0x10 +onDirty__15ItemflagManagerFv = .text:0x800BF870; // type:function size:0x4 +commit__15ItemflagManagerFv = .text:0x800BF880; // type:function size:0x4C +copyFromSave_Internal__18DungeonflagManagerFUs = .text:0x800BF8D0; // type:function size:0x54 setCommitFlag__18DungeonflagManagerFUs = .text:0x800BF930; // type:function size:0xC __ct__18DungeonflagManagerFv = .text:0x800BF940; // type:function size:0x3C -setupFlagStuff__18DungeonflagManagerFv = .text:0x800BF980; // type:function size:0x54 -copyFromSave__18DungeonflagManagerFs = .text:0x800BF9E0; // type:function size:0xC +init__18DungeonflagManagerFv = .text:0x800BF980; // type:function size:0x54 +copyFromSave__18DungeonflagManagerFUl = .text:0x800BF9E0; // type:function size:0xC setToValue__18DungeonflagManagerFUsUl = .text:0x800BF9F0; // type:function size:0x6C setFlag__18DungeonflagManagerFUs = .text:0x800BFA60; // type:function size:0x60 getDungeonFlag__18DungeonflagManagerFUs = .text:0x800BFAC0; // type:function size:0x50 @@ -4184,7 +4184,7 @@ doCommit__18DungeonflagManagerFv = .text:0x800BFB10; // type:function size:0x8C copyFromSave__15SkipflagManagerFv = .text:0x800BFBA0; // type:function size:0x44 setCommitFlag__15SkipflagManagerFUs = .text:0x800BFBF0; // type:function size:0xC __ct__15SkipflagManagerFv = .text:0x800BFC00; // type:function size:0x2C -unsetCommitFlag__15SkipflagManagerFv = .text:0x800BFC30; // type:function size:0xC +init__15SkipflagManagerFv = .text:0x800BFC30; // type:function size:0xC thunk_copyFromSave__15SkipflagManagerFv = .text:0x800BFC40; // type:function size:0x4 setFlag__15SkipflagManagerFUs = .text:0x800BFC50; // type:function size:0xD0 checkFlag__15SkipflagManagerFUs = .text:0x800BFD20; // type:function size:0x68 @@ -4192,27 +4192,27 @@ commitFlags__15SkipflagManagerFv = .text:0x800BFD90; // type:function size:0x70 setupFlagManagers__FPQ23EGG4Heap = .text:0x800BFE00; // type:function size:0x294 __dt__15TBoxFlagManagerFv = .text:0x800C00A0; // type:function size:0x40 __dt__18EnemyDefeatManagerFv = .text:0x800C00E0; // type:function size:0x40 -__dt__16StoryFlagManagerFv = .text:0x800C0120; // type:function size:0x58 -__dt__15ItemFlagManagerFv = .text:0x800C0180; // type:function size:0x58 +__dt__16StoryflagManagerFv = .text:0x800C0120; // type:function size:0x58 +__dt__15ItemflagManagerFv = .text:0x800C0180; // type:function size:0x58 postSetup__Fv = .text:0x800C01E0; // type:function size:0x8 copyAllFlagManagersFromSave__Fv = .text:0x800C01F0; // type:function size:0x78 updateFlagForFlagIndex__FUs = .text:0x800C0270; // type:function size:0x58 -commitAllFlagManagers = .text:0x800C02D0; // type:function size:0x54 +commitAllFlagManagers__Fv = .text:0x800C02D0; // type:function size:0x54 checkedMemcpy = .text:0x800C0330; // type:function size:0x54 -getSaveFlagSpace__15ItemFlagManagerCFv = .text:0x800C0390; // type:function size:0x8 -unk3__15ItemFlagManagerFUs = .text:0x800C03A0; // type:function size:0x8 -getUncommittedValue__15ItemFlagManagerFUs = .text:0x800C03B0; // type:function size:0x8 -getCounterOrFlag__15ItemFlagManagerCFUs = .text:0x800C03C0; // type:function size:0x8 -setFlagOrCounterToValue__15ItemFlagManagerFUsUs = .text:0x800C03D0; // type:function size:0x8 -unsetFlag__15ItemFlagManagerFUs = .text:0x800C03E0; // type:function size:0x8 -doCommit__15ItemFlagManagerFv = .text:0x800C03F0; // type:function size:0x44 -setFlagszptr__15ItemFlagManagerFv = .text:0x800C0440; // type:function size:0xC -getSaveFlagSpace__16StoryFlagManagerCFv = .text:0x800C0450; // type:function size:0x8 -doCommit__16StoryFlagManagerFv = .text:0x800C0460; // type:function size:0x44 -setFlagszptr__16StoryFlagManagerFv = .text:0x800C04B0; // type:function size:0xC +getSaveFlagSpace__15ItemflagManagerCFv = .text:0x800C0390; // type:function size:0x8 +unk3__15ItemflagManagerFUs = .text:0x800C03A0; // type:function size:0x8 +getUncommittedValue__15ItemflagManagerFUs = .text:0x800C03B0; // type:function size:0x8 +getCounterOrFlag__15ItemflagManagerCFUs = .text:0x800C03C0; // type:function size:0x8 +setFlagOrCounterToValue__15ItemflagManagerFUsUs = .text:0x800C03D0; // type:function size:0x8 +unsetFlag__15ItemflagManagerFUs = .text:0x800C03E0; // type:function size:0x8 +doCommit__15ItemflagManagerFv = .text:0x800C03F0; // type:function size:0x44 +setFlagszptr__15ItemflagManagerFv = .text:0x800C0440; // type:function size:0xC +getSaveFlagSpace__16StoryflagManagerCFv = .text:0x800C0450; // type:function size:0x8 +doCommit__16StoryflagManagerFv = .text:0x800C0460; // type:function size:0x44 +setFlagszptr__16StoryflagManagerFv = .text:0x800C04B0; // type:function size:0xC doCommit__18EnemyDefeatManagerFv = .text:0x800C04C0; // type:function size:0x44 -__dt__18ItemFlagManagerSubFv = .text:0x800C0510; // type:function size:0x5C -__dt__19StoryFlagManagerSubFv = .text:0x800C0570; // type:function size:0x5C +__dt__18ItemflagManagerSubFv = .text:0x800C0510; // type:function size:0x5C +__dt__19StoryflagManagerSubFv = .text:0x800C0570; // type:function size:0x5C __dt__21EnemyDefeatManagerSubFv = .text:0x800C05D0; // type:function size:0x40 __dt__18TBoxFlagManagerSubFv = .text:0x800C0610; // type:function size:0x40 fn_800C0650 = .text:0x800C0650; // type:function size:0x3C @@ -31008,12 +31008,12 @@ lbl_80510B48 = .data:0x80510B48; // type:object size:0xC lbl_80510B54 = .data:0x80510B54; // type:object size:0xC lbl_80510B60 = .data:0x80510B60; // type:object size:0x10 lbl_80510B70 = .data:0x80510B70; // type:object size:0x18 -__vt__18ItemFlagManagerSub = .data:0x80510B88; // type:object size:0x3C -__vt__19StoryFlagManagerSub = .data:0x80510BC4; // type:object size:0x3C +__vt__18ItemflagManagerSub = .data:0x80510B88; // type:object size:0x3C +__vt__19StoryflagManagerSub = .data:0x80510BC4; // type:object size:0x3C __vt__21EnemyDefeatManagerSub = .data:0x80510C00; // type:object size:0x14 __vt__18TBoxFlagManagerSub = .data:0x80510C14; // type:object size:0x14 -__vt__15ItemFlagManager = .data:0x80510C28; // type:object size:0x3C -__vt__16StoryFlagManager = .data:0x80510C64; // type:object size:0x3C +__vt__15ItemflagManager = .data:0x80510C28; // type:object size:0x3C +__vt__16StoryflagManager = .data:0x80510C64; // type:object size:0x3C __vt__20ItemStoryManagerBase = .data:0x80510CA0; // type:object size:0x3C __vt__18EnemyDefeatManager = .data:0x80510CDC; // type:object size:0x14 __vt__15TBoxFlagManager = .data:0x80510CF0; // type:object size:0x14 @@ -48333,8 +48333,8 @@ TIMESHIFT_STONE_REFS = .bss:0x805A78C4; // type:object size:0xC data:4byte sSceneFlags__16SceneflagManager = .bss:0x805A78D0; // type:object size:0x10 sZoneFlags__16SceneflagManager = .bss:0x805A78E0; // type:object size:0x1F8 sEnemyDefeatFlags__18EnemyDefeatManager = .bss:0x805A7AD8; // type:object size:0x2000 -STATIC_STORYFLAGS = .bss:0x805A9AD8; // type:object size:0x100 -STATIC_ITEM_FLAGS = .bss:0x805A9BD8; // type:object size:0x80 +sFlags__16StoryflagManager = .bss:0x805A9AD8; // type:object size:0x100 +sFlags__15ItemflagManager = .bss:0x805A9BD8; // type:object size:0x80 sDungeonFlags__18DungeonflagManager = .bss:0x805A9C58; // type:object size:0x10 sSkipFlags__15SkipflagManager = .bss:0x805A9C68; // type:object size:0x20 lbl_805A9C88 = .bss:0x805A9C88; // type:object size:0x10 data:4byte diff --git a/include/toBeSorted/item_story_flag_manager.h b/include/toBeSorted/item_story_flag_manager.h index 4387c60f..07c96a09 100644 --- a/include/toBeSorted/item_story_flag_manager.h +++ b/include/toBeSorted/item_story_flag_manager.h @@ -18,7 +18,7 @@ public: /** 0x10 */ virtual void onDirty(); /** 0x14 */ virtual void copyFlagsFromSave() = 0; /** 0x18 */ virtual void setupUnkFlagsStuff() = 0; - /** 0x1C */ virtual bool doCommit() = 0; + /** 0x1C */ virtual void doCommit() = 0; /** 0x20 */ virtual void setFlag(u16 flag); /** 0x24 */ virtual void unsetFlag(u16 flag); /** 0x28 */ virtual void setFlagOrCounterToValue(u16 flag, u16 value); @@ -59,16 +59,19 @@ public: FlagSpace storyFlags; - void init(); bool commit(); /** 0x0C */ virtual void setFlagszptr() override { - + storyFlagsPtr = &storyFlags; } /** 0x10 */ virtual void onDirty() override; /** 0x14 */ virtual void copyFlagsFromSave() override; /** 0x18 */ virtual void setupUnkFlagsStuff() override; - /** 0x1C */ virtual bool doCommit() override {} + /** 0x1C */ virtual void doCommit() override { + u16 sz = flagSizeMaybe; + u16 *flags = storyFlagsPtr->getFlagPtrUnchecked(); + FileManager::sInstance->setStoryFlags(flags, 0, sz); + } /** 0x20 */ virtual void setFlag(u16 flag) override; /** 0x24 */ virtual void unsetFlag(u16 flag) override; /** 0x28 */ virtual void setFlagOrCounterToValue(u16 flag, u16 value) override; @@ -92,16 +95,15 @@ public: ItemflagManager(); virtual ~ItemflagManager() {} - void init(); bool commit(); /** 0x0C */ virtual void setFlagszptr() override { - + storyFlagsPtr = &itemFlags; } /** 0x10 */ virtual void onDirty() override; /** 0x14 */ virtual void copyFlagsFromSave(); /** 0x18 */ virtual void setupUnkFlagsStuff(); - /** 0x1C */ virtual bool doCommit() { + /** 0x1C */ virtual void doCommit() { u16 sz = flagSizeMaybe; u16 *flags = storyFlagsPtr->getFlagPtrUnchecked(); FileManager::sInstance->setItemFlags(flags, 0, sz); @@ -117,7 +119,7 @@ public: return getFlag(flag & ~0x4000); } /** 0x30 */ virtual u16 getUncommittedValue(u16 flag) { - return getUncommittedValue_Priv(flag & ~0x4000); + return ItemStoryManagerBase::getUncommittedValue(flag & ~0x4000); } /** 0x34 */ virtual void unk3(u16 arg) { FUN_800bf600(arg & ~0x4000); diff --git a/include/toBeSorted/misc_flag_managers.h b/include/toBeSorted/misc_flag_managers.h index adb92f93..b57c31b7 100644 --- a/include/toBeSorted/misc_flag_managers.h +++ b/include/toBeSorted/misc_flag_managers.h @@ -80,7 +80,7 @@ public: virtual void doCommit() override { FileManager *mgr = FileManager::sInstance; - mgr->setItemFlags(mFlagSpace.getFlagPtrUnchecked(), 0, 0x1000); + mgr->setEnemyDefeatFlags(mFlagSpace.getFlagPtrUnchecked(), 0, 0x1000); }; }; diff --git a/include/toBeSorted/sceneflag_manager.h b/include/toBeSorted/sceneflag_manager.h index 047581eb..b85d8be1 100644 --- a/include/toBeSorted/sceneflag_manager.h +++ b/include/toBeSorted/sceneflag_manager.h @@ -20,7 +20,7 @@ public: static u16 sZoneFlags[0xFC]; static SceneflagManager *sInstance; - void doNothing(); + void init(); void setShouldCommit(u16 flag); SceneflagManager(); s32 isNotTempOrZoneFlag(u16 flag); diff --git a/src/toBeSorted/flag_managers/dungeonflag_manager.inc b/src/toBeSorted/flag_managers/dungeonflag_manager.inc index 23602448..f40fa1ab 100644 --- a/src/toBeSorted/flag_managers/dungeonflag_manager.inc +++ b/src/toBeSorted/flag_managers/dungeonflag_manager.inc @@ -18,11 +18,11 @@ public: static u16 sDungeonFlags[8]; // static DungeonflagManager *sInstance; - void copyFromSave(s16 flag); - void copyFromSave(u16 flagIndex); + void copyFromSave(u32 flag); + void copyFromSave_Internal(u16 flagIndex); void setCommitFlag(u16 flag); DungeonflagManager(); - void setupFlagStuff(); + void init(); void setToValue(u16 flag, u32 value); void setFlag(u16 flag); u16 getDungeonFlag(u16 flag); @@ -38,13 +38,13 @@ public: }; /** 80575404 */ -// DungeonflagManager *DungeonflagManager::sInstance = nullptr; +DungeonflagManager *DungeonflagManager::sInstance = nullptr; /** 805a9c58 */ u16 DungeonflagManager::sDungeonFlags[8] = {}; /** 800bf8d0 */ -void DungeonflagManager::copyFromSave(u16 flagIndex) { +void DungeonflagManager::copyFromSave_Internal(u16 flagIndex) { mFlagSpace.copyFromSaveFile(saveFilePtr(flagIndex), 0, 0x8); } @@ -59,15 +59,15 @@ DungeonflagManager::DungeonflagManager() mFlagSpace(sDungeonFlags, ARRAY_LENGTH(sDungeonFlags)) {} /** 800bf980 */ -void DungeonflagManager::setupFlagStuff() { +void DungeonflagManager::init() { mFlagStuff = new UnkFlagStuff(0x11, DungeonflagManager__FLAG_DEFINITIONS); mShouldCommit = false; } /** 800bf9e0 */ -void DungeonflagManager::copyFromSave(s16 flag) { +void DungeonflagManager::copyFromSave(u32 flag) { mStageIndex = flag; - copyFromSave((u16)flag); + copyFromSave_Internal(flag); } /** 800bf9f0 */ diff --git a/src/toBeSorted/flag_managers/flag_managers.cpp b/src/toBeSorted/flag_managers/flag_managers.cpp index cb424b73..2f929ee9 100644 --- a/src/toBeSorted/flag_managers/flag_managers.cpp +++ b/src/toBeSorted/flag_managers/flag_managers.cpp @@ -1,5 +1,7 @@ // clang-format off +#include "common.h" +#include "toBeSorted/sceneflag_manager.h" #include #include #include @@ -11,6 +13,12 @@ #include #include +u16 StoryflagManager::sFlags[0x80]; +u16 ItemflagManager::sFlags[0x40]; + + +StoryflagManager *StoryflagManager::sInstance = nullptr; +ItemflagManager *ItemflagManager::sInstance = nullptr; ItemStoryManagerBase::ItemStoryManagerBase(): flagSizeMaybe(0), anotherSizeMaybe(0), storyFlagsPtr(nullptr), unkFlagsPtr(nullptr), dirty(false) {} ItemStoryManagerBase::~ItemStoryManagerBase() { @@ -197,6 +205,10 @@ bool ItemflagManager::commit() { static void postSetup(); static void updateFlagForFlagIndex(u16 stage); class TBoxFlagManagerSub : public TBoxFlagManager { +public: + TBoxFlagManagerSub() { + TBoxFlagManager::sInstance = this; + } // virtual ~TBoxFlagManagerSub() {} }; @@ -213,14 +225,23 @@ class ItemflagManagerSub : public ItemflagManager { // virtual ~ItemflagManagerSub() {} }; +class SceneflagManagerSub : public SceneflagManager { +}; +class DungeonflagManagerSub : public DungeonflagManager { + +}; + +class SkipflagManagerSub : public SkipflagManager { + +}; void setupFlagManagers(EGG::Heap *heap) { if (SceneflagManager::sInstance == nullptr) { - SceneflagManager::sInstance = new (heap) SceneflagManager(); + SceneflagManager::sInstance = new (heap) SceneflagManagerSub(); mHeap m(heap); - SceneflagManager::sInstance->doNothing(); + SceneflagManager::sInstance->init(); } if (TBoxFlagManager::sInstance == nullptr) { @@ -248,15 +269,15 @@ void setupFlagManagers(EGG::Heap *heap) { } if (DungeonflagManager::sInstance == nullptr) { - DungeonflagManager::sInstance = new (heap) DungeonflagManager(); + DungeonflagManager::sInstance = new (heap) DungeonflagManagerSub(); mHeap m(heap); - DungeonflagManager::sInstance->setupFlagStuff(); + DungeonflagManager::sInstance->init(); } if (SkipflagManager::sInstance == nullptr) { - SkipflagManager::sInstance = new (heap) SkipflagManager(); + SkipflagManager::sInstance = new (heap) SkipflagManagerSub(); mHeap m(heap); - SkipflagManager::sInstance->unsetCommitFlag(); + SkipflagManager::sInstance->init(); } postSetup(); @@ -273,11 +294,26 @@ void copyAllFlagManagersFromSave() { StoryflagManager::sInstance->copyFlagsFromSave_Priv(); ItemflagManager::sInstance->copyFlagsFromSave_Priv(); DungeonflagManager::sInstance->copyFromSave(flag); - SkipflagManager::sInstance->copyFromSave(); + SkipflagManager::sInstance->thunk_copyFromSave(); EnemyDefeatManager::sInstance->copyFromSave(flag); } -static void updateFlagForFlagIndex(u16 stage) {} +static void updateFlagForFlagIndex(u16 stage) { + SceneflagManager::sInstance->updateFlagindex(stage); + TBoxFlagManager::sInstance->copyFromSave(stage); + EnemyDefeatManager::sInstance->updateFlagIndex(stage); + DungeonflagManager::sInstance->copyFromSave(stage); +} + +void commitAllFlagManagers() { + StoryflagManager::sInstance->commit(); + ItemflagManager::sInstance->commit(); + DungeonflagManager::sInstance->doCommit(); + SkipflagManager::sInstance->commitFlags(); + SceneflagManager::sInstance->doCommit(); + TBoxFlagManager::sInstance->commitIfNecessary(); + EnemyDefeatManager::sInstance->commitIfNecessary(); +} extern "C" bool checkedMemcpy(void *dest, u32 destLen, const void *src, u32 count) { if (dest == nullptr || src == nullptr || destLen < count || destLen > 0xFFFF) { diff --git a/src/toBeSorted/flag_managers/sceneflag_manager.inc b/src/toBeSorted/flag_managers/sceneflag_manager.inc index 0f7b7b89..da696f74 100644 --- a/src/toBeSorted/flag_managers/sceneflag_manager.inc +++ b/src/toBeSorted/flag_managers/sceneflag_manager.inc @@ -10,7 +10,7 @@ u16 SceneflagManager::sTempFlags[] = {}; u16 SceneflagManager::sSceneFlags[8] = {}; u16 SceneflagManager::sZoneFlags[0xFC] = {}; -void SceneflagManager::doNothing() {} +void SceneflagManager::init() {} void SceneflagManager::setShouldCommit(u16 flag) { mShouldCommit = 1; } diff --git a/src/toBeSorted/flag_managers/skipflag_manager.inc b/src/toBeSorted/flag_managers/skipflag_manager.inc index e2800a32..0d859f5e 100644 --- a/src/toBeSorted/flag_managers/skipflag_manager.inc +++ b/src/toBeSorted/flag_managers/skipflag_manager.inc @@ -17,7 +17,7 @@ public: void copyFromSave(); void setCommitFlag(u16 flag); SkipflagManager(); - void unsetCommitFlag(); + void init(); void thunk_copyFromSave(); void setFlag(u16 flag); bool checkFlag(u16 flag); @@ -44,7 +44,7 @@ void SkipflagManager::setCommitFlag(u16 flag) { SkipflagManager::SkipflagManager() : mFlagSpace(sSkipFlags, ARRAY_LENGTH(sSkipFlags)), mShouldCommit(false) {} // 800bfc30 -void SkipflagManager::unsetCommitFlag() { +void SkipflagManager::init() { mShouldCommit = false; }