Skip to content

Commit 93c1b74

Browse files
committed
Skip rendering if nothing changed
1 parent 08eb9a4 commit 93c1b74

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

Diff for: cocos2d/core/CCDirector.js

+14-4
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,6 @@ cc.Director = cc.Class.extend(/** @lends cc.Director# */{
218218
cc.eventManager.dispatchEvent(this._eventAfterUpdate);
219219
}
220220

221-
renderer.clear();
222-
223221
/* to avoid flickr, nextScene MUST be here: after tick and before draw.
224222
XXX: Which bug is this one. It seems that it can't be reproduced with v0.9 */
225223
if (this._nextScene) {
@@ -230,15 +228,25 @@ cc.Director = cc.Class.extend(/** @lends cc.Director# */{
230228
this._beforeVisitScene();
231229

232230
// draw the scene
231+
var skipRendering = false;
233232
if (this._runningScene) {
234233
if (renderer.childrenOrderDirty === true) {
235234
cc.renderer.clearRenderCommands();
236235
cc.renderer.assignedZ = 0;
237236
this._runningScene._renderCmd._curLevel = 0; //level start from 0;
238237
this._runningScene.visit();
239238
renderer.resetFlag();
240-
} else if (renderer.transformDirty() === true)
239+
}
240+
else if (renderer.transformDirty() === true) {
241241
renderer.transform();
242+
}
243+
else {
244+
skipRendering = true;
245+
}
246+
}
247+
248+
if (!skipRendering) {
249+
renderer.clear();
242250
}
243251

244252
// draw the notifications node
@@ -251,7 +259,9 @@ cc.Director = cc.Class.extend(/** @lends cc.Director# */{
251259
if (this._afterVisitScene)
252260
this._afterVisitScene();
253261

254-
renderer.rendering(cc._renderContext);
262+
if (!skipRendering) {
263+
renderer.rendering(cc._renderContext);
264+
}
255265
this._totalFrames++;
256266

257267
cc.eventManager.dispatchEvent(this._eventAfterDraw);

0 commit comments

Comments
 (0)