X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Fmanager%2Fframe-callback-processor.cpp;h=10e7d8d0ced766aba40d373a7bf8911417b96033;hb=65007707f9ea809916003190ad2debd9f6c4468c;hp=5c713f2d587711717454f41468d7826f9bf33fe9;hpb=fba73ae7197a69c30f5155d05c7b3dc9adac7e43;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/manager/frame-callback-processor.cpp b/dali/internal/update/manager/frame-callback-processor.cpp index 5c713f2..10e7d8d 100644 --- a/dali/internal/update/manager/frame-callback-processor.cpp +++ b/dali/internal/update/manager/frame-callback-processor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,55 +24,60 @@ // INTERNAL INCLUDES #include #include +#include -namespace Dali +namespace { +DALI_INIT_TRACE_FILTER(gTraceFilter, DALI_TRACE_PERFORMANCE_MARKER, false); +} // namespace +namespace Dali +{ namespace Internal { - namespace SceneGraph { - -FrameCallbackProcessor::FrameCallbackProcessor( UpdateManager& updateManager, TransformManager& transformManager ) +FrameCallbackProcessor::FrameCallbackProcessor(UpdateManager& updateManager, TransformManager& transformManager) : mFrameCallbacks(), - mUpdateManager( updateManager ), - mTransformManager( transformManager ), - mNodeHierarchyChanged( true ) + mUpdateManager(updateManager), + mTransformManager(transformManager), + mNodeHierarchyChanged(true) { } -FrameCallbackProcessor::~FrameCallbackProcessor() -{ -} +FrameCallbackProcessor::~FrameCallbackProcessor() = default; -void FrameCallbackProcessor::AddFrameCallback( OwnerPointer< FrameCallback >& frameCallback, const Node* rootNode ) +void FrameCallbackProcessor::AddFrameCallback(OwnerPointer& frameCallback, const Node* rootNode) { - Node& node = const_cast< Node& >( *rootNode ); // Was sent as const from event thread, we need to be able to use non-const version here. + Node& node = const_cast(*rootNode); // Was sent as const from event thread, we need to be able to use non-const version here. - frameCallback->ConnectToSceneGraph( mUpdateManager, mTransformManager, node ); + frameCallback->ConnectToSceneGraph(mUpdateManager, mTransformManager, node); - mFrameCallbacks.emplace_back( frameCallback ); + mFrameCallbacks.emplace_back(frameCallback); } -void FrameCallbackProcessor::RemoveFrameCallback( FrameCallbackInterface* frameCallback ) +void FrameCallbackProcessor::RemoveFrameCallback(FrameCallbackInterface* frameCallback) { // Find and remove all frame-callbacks that use the given frame-callback-interface - auto iter = std::remove( mFrameCallbacks.begin(), mFrameCallbacks.end(), frameCallback ); - mFrameCallbacks.erase( iter, mFrameCallbacks.end() ); + auto iter = std::remove(mFrameCallbacks.begin(), mFrameCallbacks.end(), frameCallback); + mFrameCallbacks.erase(iter, mFrameCallbacks.end()); } -void FrameCallbackProcessor::Update( BufferIndex bufferIndex, float elapsedSeconds ) +void FrameCallbackProcessor::Update(BufferIndex bufferIndex, float elapsedSeconds) { - // If any of the FrameCallback::Update calls returns false, then they are no longer required & can be removed. - auto iter = std::remove_if( - mFrameCallbacks.begin(), mFrameCallbacks.end(), - [ & ]( OwnerPointer< FrameCallback >& frameCallback ) - { - return ! frameCallback->Update( bufferIndex, elapsedSeconds, mNodeHierarchyChanged ); - } - ); - mFrameCallbacks.erase( iter, mFrameCallbacks.end() ); + if(!mFrameCallbacks.empty()) + { + DALI_TRACE_BEGIN(gTraceFilter, "DALI_FRAME_CALLBACK_UPDATE"); + + // If any of the FrameCallback::Update calls returns false, then they are no longer required & can be removed. + auto iter = std::remove_if( + mFrameCallbacks.begin(), mFrameCallbacks.end(), [&](OwnerPointer& frameCallback) { + return !frameCallback->Update(bufferIndex, elapsedSeconds, mNodeHierarchyChanged); + }); + mFrameCallbacks.erase(iter, mFrameCallbacks.end()); + + DALI_TRACE_END(gTraceFilter, "DALI_FRAME_CALLBACK_UPDATE"); + } mNodeHierarchyChanged = false; }