CCSchedulerStateMachine::Action CCSchedulerStateMachine::nextAction() const { if (shouldAcquireLayerTexturesForMainThread()) return ACTION_ACQUIRE_LAYER_TEXTURES_FOR_MAIN_THREAD; switch (m_commitState) { case COMMIT_STATE_IDLE: if (m_contextState != CONTEXT_ACTIVE && m_needsForcedRedraw) return ACTION_DRAW_FORCED; if (m_contextState != CONTEXT_ACTIVE && m_needsForcedCommit) return ACTION_BEGIN_FRAME; if (m_contextState == CONTEXT_LOST) return ACTION_BEGIN_CONTEXT_RECREATION; if (m_contextState == CONTEXT_RECREATING) return ACTION_NONE; if (shouldDraw()) return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POSSIBLE; if (m_needsCommit && ((m_visible && m_canBeginFrame) || m_needsForcedCommit)) return ACTION_BEGIN_FRAME; return ACTION_NONE; case COMMIT_STATE_FRAME_IN_PROGRESS: if (shouldDraw()) return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POSSIBLE; return ACTION_NONE; case COMMIT_STATE_UPDATING_RESOURCES: if (shouldDraw()) return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POSSIBLE; if (!m_updateMoreResourcesPending) return ACTION_BEGIN_UPDATE_MORE_RESOURCES; return ACTION_NONE; case COMMIT_STATE_READY_TO_COMMIT: return ACTION_COMMIT; case COMMIT_STATE_WAITING_FOR_FIRST_DRAW: if (shouldDraw() || m_contextState == CONTEXT_LOST) return m_needsForcedRedraw ? ACTION_DRAW_FORCED : ACTION_DRAW_IF_POSSIBLE; // COMMIT_STATE_WAITING_FOR_FIRST_DRAW wants to enforce a draw. If m_canDraw is false // or textures are not available, proceed to the next step (similar as in COMMIT_STATE_IDLE). bool canCommit = m_visible || m_needsForcedCommit; if (m_needsCommit && canCommit && drawSuspendedUntilCommit()) return ACTION_BEGIN_FRAME; return ACTION_NONE; } ASSERT_NOT_REACHED(); return ACTION_NONE; }
/* protected validate() Validates the component */ void Component::validate(){ // std::cout << "Check component validity....\n"; if(!shouldDraw() && !shouldLayout()){ //std::cout << "Component is valid\n\n"; m_valid = true; //RenderHandler::Get()->validate(); }else{ // std::cout << "Component is not valid\n\n"; } }