diff --git a/Easy2D/Action/EActionFrames.cpp b/Easy2D/Action/EActionFrames.cpp index 9505c1aa..751ffab2 100644 --- a/Easy2D/Action/EActionFrames.cpp +++ b/Easy2D/Action/EActionFrames.cpp @@ -18,8 +18,7 @@ e2d::EActionFrames::~EActionFrames() { for (auto frame : m_vFrames) { - frame->autoRelease(); - frame->release(); + SafeRelease(&frame); } } diff --git a/Easy2D/Base/EScene.cpp b/Easy2D/Base/EScene.cpp index bc144e5d..8c736f1b 100644 --- a/Easy2D/Base/EScene.cpp +++ b/Easy2D/Base/EScene.cpp @@ -7,15 +7,19 @@ e2d::EScene::EScene() : m_bWillSave(true) , m_bSortNeeded(false) - , m_Root(new ENode()) + , m_pRoot(new ENode()) { - m_Root->_onEnter(); - m_Root->_setParentScene(this); + m_pRoot->_onEnter(); + m_pRoot->_setParentScene(this); } e2d::EScene::~EScene() { - m_Root->autoRelease(); + SafeRelease(&m_pRoot); + ETimerManager::clearAllTimersBindedWith(this); + EMsgManager::clearAllMouseListenersBindedWith(this); + EMsgManager::clearAllKeyboardListenersBindedWith(this); + EActionManager::clearAllActionsBindedWith(this); } void e2d::EScene::onEnter() @@ -42,7 +46,7 @@ bool e2d::EScene::onCloseWindow() void e2d::EScene::_onRender() { - m_Root->_callOn(); + m_pRoot->_callOn(); } void e2d::EScene::_onEnter() @@ -63,48 +67,41 @@ void e2d::EScene::_onExit() EMsgManager::_waitAllKeyboardListenersBindedWith(this); EActionManager::_waitAllActionsBindedWith(this); } - else - { - ETimerManager::clearAllTimersBindedWith(this); - EMsgManager::clearAllMouseListenersBindedWith(this); - EMsgManager::clearAllKeyboardListenersBindedWith(this); - EActionManager::clearAllActionsBindedWith(this); - } } void e2d::EScene::add(ENode * child, int order /* = 0 */) { - m_Root->addChild(child, order); + m_pRoot->addChild(child, order); } bool e2d::EScene::remove(ENode * child, bool release /* = false */) { - return m_Root->removeChild(child, release); + return m_pRoot->removeChild(child, release); } void e2d::EScene::remove(const EString &childName, bool release /* = false */) { - return m_Root->removeChild(childName, release); + return m_pRoot->removeChild(childName, release); } e2d::EVector& e2d::EScene::getChildren() { - return m_Root->m_vChildren; + return m_pRoot->m_vChildren; } size_t e2d::EScene::getChildrenCount() const { - return m_Root->getChildrenCount(); + return m_pRoot->getChildrenCount(); } e2d::ENode * e2d::EScene::getChild(const EString &childName) { - return m_Root->getChild(childName); + return m_pRoot->getChild(childName); } void e2d::EScene::clearAllChildren() { - m_Root->clearAllChildren(); + m_pRoot->clearAllChildren(); } void e2d::EScene::bindListener(EMouseListener * listener) diff --git a/Easy2D/Msg/EMsgManager.cpp b/Easy2D/Msg/EMsgManager.cpp index b55e9e51..8229bcea 100644 --- a/Easy2D/Msg/EMsgManager.cpp +++ b/Easy2D/Msg/EMsgManager.cpp @@ -252,8 +252,7 @@ void e2d::EMsgManager::delMouseListeners(const EString & name) { if ((*mIter)->getName() == name) { - (*mIter)->autoRelease(); - (*mIter)->release(); + SafeRelease(&(*mIter)); mIter = s_vMouseListeners.erase(mIter); } else @@ -295,8 +294,7 @@ void e2d::EMsgManager::delKeyboardListeners(const EString & name) { if ((*kIter)->getName() == name) { - (*kIter)->autoRelease(); - (*kIter)->release(); + SafeRelease(&(*kIter)); kIter = s_vKeyboardListeners.erase(kIter); } else @@ -433,8 +431,7 @@ void e2d::EMsgManager::clearAllMouseListenersBindedWith(EScene * pParentScene) auto t = s_vMouseListeners[i]; if (t->getParentScene() == pParentScene) { - t->autoRelease(); - t->release(); + SafeRelease(&t); s_vMouseListeners.erase(s_vMouseListeners.begin() + i); } else @@ -455,8 +452,7 @@ void e2d::EMsgManager::clearAllKeyboardListenersBindedWith(EScene * pParentScene auto t = s_vKeyboardListeners[i]; if (t->getParentScene() == pParentScene) { - t->autoRelease(); - t->release(); + SafeRelease(&t); s_vKeyboardListeners.erase(s_vKeyboardListeners.begin() + i); } else @@ -477,8 +473,7 @@ void e2d::EMsgManager::clearAllMouseListenersBindedWith(ENode * pParentNode) auto t = s_vMouseListeners[i]; if (t->getParentNode() == pParentNode) { - t->autoRelease(); - t->release(); + SafeRelease(&t); s_vMouseListeners.erase(s_vMouseListeners.begin() + i); } else @@ -499,8 +494,7 @@ void e2d::EMsgManager::clearAllKeyboardListenersBindedWith(ENode * pParentNode) auto t = s_vKeyboardListeners[i]; if (t->getParentNode() == pParentNode) { - t->autoRelease(); - t->release(); + SafeRelease(&t); s_vKeyboardListeners.erase(s_vKeyboardListeners.begin() + i); } else diff --git a/Easy2D/Tool/EActionManager.cpp b/Easy2D/Tool/EActionManager.cpp index e9347c2f..8c70df05 100644 --- a/Easy2D/Tool/EActionManager.cpp +++ b/Easy2D/Tool/EActionManager.cpp @@ -100,8 +100,7 @@ void e2d::EActionManager::clearAllActionsBindedWith(ENode * pTargetNode) auto a = s_vActions[i]; if (a->getTarget() == pTargetNode) { - a->autoRelease(); - a->release(); + SafeRelease(&a); s_vActions.erase(s_vActions.begin() + i); } else @@ -205,8 +204,7 @@ void e2d::EActionManager::ActionProc() if (action->_isEnding()) { // 动作已经结束 - action->autoRelease(); - action->release(); + SafeRelease(&action); s_vActions.erase(s_vActions.begin() + i); } else diff --git a/Easy2D/Tool/ETimerManager.cpp b/Easy2D/Tool/ETimerManager.cpp index d2bb6c79..2c5ab30f 100644 --- a/Easy2D/Tool/ETimerManager.cpp +++ b/Easy2D/Tool/ETimerManager.cpp @@ -69,8 +69,7 @@ void e2d::ETimerManager::delTimers(const EString & name) { if ((*mIter)->getName() == name) { - (*mIter)->autoRelease(); - (*mIter)->release(); + SafeRelease(&(*mIter)); mIter = s_vTimers.erase(mIter); } else @@ -117,8 +116,7 @@ void e2d::ETimerManager::clearAllTimersBindedWith(EScene * pParentScene) auto t = s_vTimers[i]; if (t->getParentScene() == pParentScene) { - t->autoRelease(); - t->release(); + SafeRelease(&t); s_vTimers.erase(s_vTimers.begin() + i); } else @@ -169,8 +167,7 @@ void e2d::ETimerManager::clearAllTimersBindedWith(ENode * pParentNode) auto t = s_vTimers[i]; if (t->getParentNode() == pParentNode) { - t->autoRelease(); - t->release(); + SafeRelease(&t); s_vTimers.erase(s_vTimers.begin() + i); } else diff --git a/Easy2D/ebase.h b/Easy2D/ebase.h index 604f54d4..11ad3fb9 100644 --- a/Easy2D/ebase.h +++ b/Easy2D/ebase.h @@ -88,8 +88,8 @@ public: // 切换场景 static void enterScene( - EScene * scene, - bool saveCurrentScene = true + EScene * scene, /* 下一个场景的指针 */ + bool saveCurrentScene = true /* 是否保存当前场景 */ ); // 返回上一场景 @@ -261,7 +261,7 @@ protected: protected: bool m_bSortNeeded; bool m_bWillSave; - ENode * const m_Root; + ENode * m_pRoot; };