Performance: Fixed lag if Director::setContentScaleFactor is called frequently

This commit is contained in:
WenhaiLin 2015-04-02 23:35:56 +08:00
parent b648d1f25e
commit aaae566b7b
3 changed files with 15 additions and 6 deletions

View File

@ -2,7 +2,7 @@
Copyright (c) 2008-2010 Ricardo Quesada Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2010-2013 cocos2d-x.org Copyright (c) 2010-2013 cocos2d-x.org
Copyright (c) 2011 Zynga Inc. Copyright (c) 2011 Zynga Inc.
Copyright (c) 2013-2014 Chukong Technologies Inc. Copyright (c) 2013-2015 Chukong Technologies Inc.
http://www.cocos2d-x.org http://www.cocos2d-x.org
@ -107,6 +107,7 @@ Director* Director::getInstance()
} }
Director::Director() Director::Director()
: _isStatusLabelUpdated(true)
{ {
} }
@ -386,7 +387,7 @@ void Director::setOpenGLView(GLView *openGLView)
// set size // set size
_winSizeInPoints = _openGLView->getDesignResolutionSize(); _winSizeInPoints = _openGLView->getDesignResolutionSize();
createStatsLabel(); _isStatusLabelUpdated = true;
if (_openGLView) if (_openGLView)
{ {
@ -1110,6 +1111,12 @@ void Director::resume()
// updates the FPS every frame // updates the FPS every frame
void Director::showStats() void Director::showStats()
{ {
if (_isStatusLabelUpdated)
{
createStatsLabel();
_isStatusLabelUpdated = false;
}
static unsigned long prevCalls = 0; static unsigned long prevCalls = 0;
static unsigned long prevVerts = 0; static unsigned long prevVerts = 0;
static float prevDeltaTime = 0.016f; // 60FPS static float prevDeltaTime = 0.016f; // 60FPS
@ -1255,7 +1262,7 @@ void Director::setContentScaleFactor(float scaleFactor)
if (scaleFactor != _contentScaleFactor) if (scaleFactor != _contentScaleFactor)
{ {
_contentScaleFactor = scaleFactor; _contentScaleFactor = scaleFactor;
createStatsLabel(); _isStatusLabelUpdated = true;
} }
} }

View File

@ -2,7 +2,7 @@
Copyright (c) 2008-2010 Ricardo Quesada Copyright (c) 2008-2010 Ricardo Quesada
Copyright (c) 2010-2013 cocos2d-x.org Copyright (c) 2010-2013 cocos2d-x.org
Copyright (c) 2011 Zynga Inc. Copyright (c) 2011 Zynga Inc.
Copyright (c) 2013-2014 Chukong Technologies Inc. Copyright (c) 2013-2015 Chukong Technologies Inc.
http://www.cocos2d-x.org http://www.cocos2d-x.org
@ -597,6 +597,8 @@ protected:
/* Console for the director */ /* Console for the director */
Console *_console; Console *_console;
bool _isStatusLabelUpdated;
// GLView will recreate stats labels to fit visible rect // GLView will recreate stats labels to fit visible rect
friend class GLView; friend class GLView;
}; };

View File

@ -1,6 +1,6 @@
/**************************************************************************** /****************************************************************************
Copyright (c) 2010-2012 cocos2d-x.org Copyright (c) 2010-2012 cocos2d-x.org
Copyright (c) 2013-2014 Chukong Technologies Inc. Copyright (c) 2013-2015 Chukong Technologies Inc.
http://www.cocos2d-x.org http://www.cocos2d-x.org
@ -156,7 +156,7 @@ void GLView::updateDesignResolutionSize()
// reset director's member variables to fit visible rect // reset director's member variables to fit visible rect
auto director = Director::getInstance(); auto director = Director::getInstance();
director->_winSizeInPoints = getDesignResolutionSize(); director->_winSizeInPoints = getDesignResolutionSize();
director->createStatsLabel(); director->_isStatusLabelUpdated = true;
director->setGLDefaultValues(); director->setGLDefaultValues();
} }
} }