Add trace log to FrameCallbackProcessor::Update
[platform/core/uifw/dali-core.git] / dali / internal / update / manager / frame-callback-processor.cpp
index ca36566..10e7d8d 100644 (file)
@@ -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.
 // INTERNAL INCLUDES
 #include <dali/devel-api/update/frame-callback-interface.h>
 #include <dali/devel-api/update/update-proxy.h>
+#include <dali/integration-api/trace.h>
 
-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() = default;
 
-void FrameCallbackProcessor::AddFrameCallback( OwnerPointer< FrameCallback >& frameCallback, const Node* rootNode )
+void FrameCallbackProcessor::AddFrameCallback(OwnerPointer<FrameCallback>& 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<Node&>(*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>& frameCallback) {
+        return !frameCallback->Update(bufferIndex, elapsedSeconds, mNodeHierarchyChanged);
+      });
+    mFrameCallbacks.erase(iter, mFrameCallbacks.end());
+
+    DALI_TRACE_END(gTraceFilter, "DALI_FRAME_CALLBACK_UPDATE");
+  }
 
   mNodeHierarchyChanged = false;
 }