Merge pull request #1405 from dualface/complete_delete_ccdirector

Complete delete CCDirector after called CCDirector::purgeDirector()
This commit is contained in:
minggo 2012-09-28 19:20:36 -07:00
commit 936cb19684
1 changed files with 11 additions and 7 deletions

View File

@ -73,21 +73,20 @@ NS_CC_BEGIN
// XXX it should be a Director ivar. Move it there once support for multiple directors is added // XXX it should be a Director ivar. Move it there once support for multiple directors is added
// singleton stuff // singleton stuff
static CCDisplayLinkDirector s_SharedDirector; static CCDisplayLinkDirector *s_SharedDirector = NULL;
#define kDefaultFPS 60 // 60 frames per second #define kDefaultFPS 60 // 60 frames per second
extern const char* cocos2dVersion(void); extern const char* cocos2dVersion(void);
CCDirector* CCDirector::sharedDirector(void) CCDirector* CCDirector::sharedDirector(void)
{ {
static bool s_bFirstUseDirector = true; if (!s_SharedDirector)
if (s_bFirstUseDirector)
{ {
s_bFirstUseDirector = false; s_SharedDirector = new CCDisplayLinkDirector();
s_SharedDirector.init(); s_SharedDirector->init();
} }
return &s_SharedDirector; return s_SharedDirector;
} }
CCDirector::CCDirector(void) CCDirector::CCDirector(void)
@ -162,7 +161,7 @@ bool CCDirector::init(void)
CCDirector::~CCDirector(void) CCDirector::~CCDirector(void)
{ {
CCLOG("cocos2d: deallocing %p", this); CCLOG("cocos2d: deallocing CCDirector %p", this);
CC_SAFE_RELEASE(m_pFPSLabel); CC_SAFE_RELEASE(m_pFPSLabel);
CC_SAFE_RELEASE(m_pSPFLabel); CC_SAFE_RELEASE(m_pSPFLabel);
@ -185,6 +184,8 @@ CCDirector::~CCDirector(void)
CC_SAFE_DELETE(m_pLastUpdate); CC_SAFE_DELETE(m_pLastUpdate);
// delete fps string // delete fps string
delete []m_pszFPS; delete []m_pszFPS;
s_SharedDirector = NULL;
} }
void CCDirector::setGLDefaultValues(void) void CCDirector::setGLDefaultValues(void)
@ -640,6 +641,9 @@ void CCDirector::purgeDirector()
// OpenGL view // OpenGL view
m_pobOpenGLView->end(); m_pobOpenGLView->end();
m_pobOpenGLView = NULL; m_pobOpenGLView = NULL;
// delete CCDirector
release();
} }
void CCDirector::setNextScene(void) void CCDirector::setNextScene(void)