修复了更新后退出游戏崩溃的bug

This commit is contained in:
Nomango 2017-10-06 13:58:00 +08:00
parent 65494fb0e3
commit 66869b0af5
2 changed files with 20 additions and 33 deletions

View File

@ -26,7 +26,6 @@ App::App() :
App::~App() App::~App()
{ {
destory(); // 销毁 App
} }
App * App::get() App * App::get()
@ -35,23 +34,6 @@ App * App::get()
return s_pInstance; // 获取 App 的唯一实例 return s_pInstance; // 获取 App 的唯一实例
} }
void App::setOrigin(int originX, int originY)
{
::originX = originX;
::originY = originY;
setorigin(originX, originY);
}
int App::getOriginX()
{
return ::originX;
}
int App::getOriginY()
{
return ::originY;
}
int App::run() int App::run()
{ {
// 开启批量绘图 // 开启批量绘图
@ -95,8 +77,7 @@ int App::run()
// 计算挂起时长 // 计算挂起时长
waitMS = LONG((m_nAnimationInterval.QuadPart - interval) * 1000LL / freq.QuadPart) - 1L; waitMS = LONG((m_nAnimationInterval.QuadPart - interval) * 1000LL / freq.QuadPart) - 1L;
// 挂起线程,释放 CPU 占用 // 挂起线程,释放 CPU 占用
if (waitMS > 1L) if (waitMS > 1L) Sleep(waitMS);
Sleep(waitMS);
} }
} }
// 停止批量绘图 // 停止批量绘图
@ -104,7 +85,7 @@ int App::run()
// 关闭窗口 // 关闭窗口
close(); close();
// 释放所有内存占用 // 释放所有内存占用
destory(); free();
// 重置时间精度 // 重置时间精度
timeEndPeriod(1); timeEndPeriod(1);
@ -314,7 +295,7 @@ void App::_enterNextScene()
m_SceneStack.pop(); // 删除栈顶场景 m_SceneStack.pop(); // 删除栈顶场景
} }
if (m_bSaveScene) if (m_bSaveScene && m_pCurrentScene)
{ {
m_SceneStack.push(m_pCurrentScene); // 若要保存当前场景,把它的指针放到栈顶 m_SceneStack.push(m_pCurrentScene); // 若要保存当前场景,把它的指针放到栈顶
} }
@ -376,6 +357,23 @@ int App::getHeight()
return s_pInstance->m_Size.cy; return s_pInstance->m_Size.cy;
} }
void App::setOrigin(int originX, int originY)
{
::originX = originX;
::originY = originY;
setorigin(originX, originY);
}
int App::getOriginX()
{
return ::originX;
}
int App::getOriginY()
{
return ::originY;
}
void App::free() void App::free()
{ {
// 释放场景内存 // 释放场景内存
@ -396,12 +394,3 @@ void App::free()
// 删除所有对象 // 删除所有对象
FreePool::__clearAllObjects(); FreePool::__clearAllObjects();
} }
void App::destory()
{
// 释放所有内存
s_pInstance->free();
// 实例指针置空
delete s_pInstance;
s_pInstance = nullptr;
}

View File

@ -176,8 +176,6 @@ public:
static void reset(); static void reset();
// »ñÈ¡µ±Ç°³¡¾° // »ñÈ¡µ±Ç°³¡¾°
static Scene * getCurrentScene(); static Scene * getCurrentScene();
// 销毁该对象
static void destory();
protected: protected:
TString m_sTitle; TString m_sTitle;