[Tizen] (Vector) Let lottie for ubuntu don't use eventfd what we don't need. 33/307033/2
authorEunki, Hong <eunkiki.hong@samsung.com>
Wed, 28 Feb 2024 11:38:56 +0000 (20:38 +0900)
committerEunki Hong <eunkiki.hong@samsung.com>
Mon, 4 Mar 2024 05:42:54 +0000 (05:42 +0000)
Since we support global single fd at VectorAnimationPluginManager(),
Let we use this system for VectorAnimationRendererX, instead of using their
own EventThreadTrigger.

Change-Id: I279b0e440ca1e16db3b803a8c672129675383293
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-extension/vector-animation-renderer/vector-animation-renderer-tizen.h
dali-extension/vector-animation-renderer/vector-animation-renderer-x.cpp
dali-extension/vector-animation-renderer/vector-animation-renderer-x.h
dali-extension/vector-animation-renderer/vector-animation-renderer.h

index 3b87cd1..5b22d19 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_VECTOR_ANIMATION_RENDERER_TIZEN_H
 
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -70,13 +70,6 @@ private:
   void OnFinalize() override;
 
   /**
-   * @brief Event callback to process events.
-   */
-  void OnLottieRendered() override
-  {
-  }
-
-  /**
    * @copydoc VectorAnimationRenderer::OnNotify()
    */
   void OnNotify() override;
@@ -121,8 +114,8 @@ private:
 
   std::vector<SurfacePair> mBuffers; ///< EGL Image vector
 
-  Dali::Texture                      mRenderedTexture;  ///< Rendered Texture
-  std::vector<Dali::Texture>         mPreviousTextures; ///< Previous rendered texture
+  Dali::Texture              mRenderedTexture;  ///< Rendered Texture
+  std::vector<Dali::Texture> mPreviousTextures; ///< Previous rendered texture
 };
 
 } // namespace Plugin
index 7c55bdb..972055a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -54,7 +54,7 @@ public:
 };
 
 VectorAnimationRendererX::VectorAnimationRendererX()
-: mRenderCallback(std::unique_ptr<EventThreadCallback>(new EventThreadCallback(MakeCallback(this, &VectorAnimationRendererX::OnLottieRendered))))
+: mUploadPixelBufferRequired(false)
 {
 }
 
@@ -93,16 +93,17 @@ bool VectorAnimationRendererX::Render(uint32_t frameNumber)
   }
 
   mVectorRenderer->renderSync(frameNumber, renderingDataImpl->mLottieSurface);
-  mRenderCallback->Trigger();
+
+  mUploadPixelBufferRequired = true;
 
   if(!mResourceReady)
   {
     mResourceReady          = true;
     mResourceReadyTriggered = true;
-
-    VectorAnimationPluginManager::Get().TriggerEvent(*this);
   }
 
+  VectorAnimationPluginManager::Get().TriggerEvent(*this);
+
   return true;
 }
 
@@ -120,34 +121,37 @@ void VectorAnimationRendererX::OnFinalize()
 {
 }
 
-void VectorAnimationRendererX::OnLottieRendered()
+// This Method is called inside mMutex
+void VectorAnimationRendererX::OnNotify()
 {
+  // Skip Upload operation if we don't need.
+  if(!mUploadPixelBufferRequired)
+  {
+    return;
+  }
+
   std::shared_ptr<RenderingDataImpl> renderingDataImpl;
   {
     Dali::Mutex::ScopedLock lock(mRenderingDataMutex);
     renderingDataImpl = std::static_pointer_cast<RenderingDataImpl>(mCurrentRenderingData);
   }
 
-  Dali::Mutex::ScopedLock lock(mMutex);
   if(renderingDataImpl && renderingDataImpl->mPixelBuffer && renderingDataImpl->mTexture)
   {
     PixelData pixelData = renderingDataImpl->mPixelBuffer.CreatePixelData();
     renderingDataImpl->mTexture.Upload(pixelData);
-  }
-}
 
-// This Method is called inside mMutex
-void VectorAnimationRendererX::OnNotify()
-{
+    mUploadPixelBufferRequired = false;
+  }
 }
 
 // This Method is called inside mRenderingDataMutex
 void VectorAnimationRendererX::PrepareTarget(std::shared_ptr<RenderingData> renderingData)
 {
   std::shared_ptr<RenderingDataImpl> renderingDataImpl = std::static_pointer_cast<RenderingDataImpl>(renderingData);
-  renderingDataImpl->mTexture = Texture::New(Dali::TextureType::TEXTURE_2D, Dali::Pixel::BGRA8888, renderingDataImpl->mWidth, renderingDataImpl->mHeight);
-  renderingDataImpl->mPixelBuffer   = Dali::Devel::PixelBuffer::New(renderingDataImpl->mWidth, renderingDataImpl->mHeight, Dali::Pixel::BGRA8888);
-  renderingDataImpl->mLottieSurface = rlottie::Surface(reinterpret_cast<uint32_t*>(renderingDataImpl->mPixelBuffer.GetBuffer()), renderingDataImpl->mWidth, renderingDataImpl->mHeight, static_cast<size_t>(renderingDataImpl->mPixelBuffer.GetStride() * 4));
+  renderingDataImpl->mTexture                          = Texture::New(Dali::TextureType::TEXTURE_2D, Dali::Pixel::BGRA8888, renderingDataImpl->mWidth, renderingDataImpl->mHeight);
+  renderingDataImpl->mPixelBuffer                      = Dali::Devel::PixelBuffer::New(renderingDataImpl->mWidth, renderingDataImpl->mHeight, Dali::Pixel::BGRA8888);
+  renderingDataImpl->mLottieSurface                    = rlottie::Surface(reinterpret_cast<uint32_t*>(renderingDataImpl->mPixelBuffer.GetBuffer()), renderingDataImpl->mWidth, renderingDataImpl->mHeight, static_cast<size_t>(renderingDataImpl->mPixelBuffer.GetStride() * 4));
 }
 
 // This Method is called inside mRenderingDataMutex
index e0cc49e..29fc3dc 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_VECTOR_ANIMATION_RENDERER_X_H
 
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -19,7 +19,6 @@
  */
 
 // EXTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/event-thread-callback.h>
 #include <dali/devel-api/adaptor-framework/pixel-buffer.h>
 #include <dali/public-api/adaptor-framework/native-image-source.h>
 
@@ -70,11 +69,6 @@ private:
   void OnFinalize() override;
 
   /**
-   * @brief Event callback to process events.
-   */
-  void OnLottieRendered() override;
-
-  /**
    * @copydoc VectorAnimationRenderer::OnNotify()
    */
   void OnNotify() override;
@@ -94,7 +88,8 @@ private:
    * @note This Method is called inside mRenderingDataMutex
    */
   void OnSetSize(std::shared_ptr<RenderingData> renderingData) override
-  {}
+  {
+  }
 
   /**
    * @copydoc VectorAnimationRenderer::IsTargetPrepared()
@@ -117,7 +112,7 @@ private:
   std::shared_ptr<RenderingData> CreateRenderingData() override;
 
 private:
-  std::unique_ptr<EventThreadCallback> mRenderCallback; ///
+  bool mUploadPixelBufferRequired;
 };
 
 } // namespace Plugin
index 78a46ee..169a03d 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_EXTENSION_VECTOR_ANIMATION_RENDERER_H
 
 /*
- * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -128,7 +128,6 @@ protected: // Implementation of VectorAnimationEventHandler
   void NotifyEvent() override;
 
 protected:
-
   class RenderingData
   {
   public:
@@ -148,11 +147,6 @@ protected:
   virtual void OnFinalize() = 0;
 
   /**
-   * @brief Event callback to process events.
-   */
-  virtual void OnLottieRendered() = 0;
-
-  /**
    * @brief Notify event thread comes
    */
   virtual void OnNotify() = 0;