void CanvasContext::destroy() { stopDrawing(); setSurface(NULL); freePrefetechedLayers(); destroyHardwareResources(); mAnimationContext->destroy(); if (mCanvas) { delete mCanvas; mCanvas = 0; } }
void RenderNode::decParentRefCount(TreeObserver* observer, TreeInfo* info) { LOG_ALWAYS_FATAL_IF(!mParentCount, "already 0!"); mParentCount--; if (!mParentCount) { if (observer) { observer->onMaybeRemovedFromTree(this); } if (CC_UNLIKELY(mPositionListener.get())) { mPositionListener->onPositionLost(*this, info); } // If a child of ours is being attached to our parent then this will incorrectly // destroy its hardware resources. However, this situation is highly unlikely // and the failure is "just" that the layer is re-created, so this should // be safe enough destroyHardwareResources(observer, info); } }