Reduce convert from std::string to VisualUrl 80/315080/3
authorEunki, Hong <eunkiki.hong@samsung.com>
Wed, 24 Jul 2024 12:29:06 +0000 (21:29 +0900)
committerEunki Hong <eunkiki.hong@samsung.com>
Fri, 26 Jul 2024 00:56:53 +0000 (00:56 +0000)
Whenever we create new VisualUrl from raw-string, it might calculate
the hash, or protocol check one more time.

To avoid this thing, let's make we use VisualUrl where we can use it.

Note : Since ImageUrl can only use std::string itself instead of VisualUrl,
we should make some API to remove external textures by std::string.

Change-Id: I6888f60e6060aae79d7d11dbc7cf0aa4004d4266
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-toolkit/devel-api/image-loader/texture-manager.cpp
dali-toolkit/internal/image-loader/image-url-impl.cpp
dali-toolkit/internal/texture-manager/texture-async-loading-helper.cpp
dali-toolkit/internal/texture-manager/texture-manager-impl.h
dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp
dali-toolkit/internal/visuals/image/image-visual.cpp
dali-toolkit/internal/visuals/svg/svg-loader.cpp
dali-toolkit/internal/visuals/svg/svg-visual.cpp

index ace107e..5169135 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.
@@ -44,7 +44,7 @@ TextureSet RemoveTexture(const std::string& textureUrl)
 {
   auto  visualFactory = Toolkit::VisualFactory::Get();
   auto& textureMgr    = GetImplementation(visualFactory).GetTextureManager();
-  return textureMgr.RemoveExternalTexture(textureUrl);
+  return textureMgr.RemoveExternalTextureByUrl(textureUrl);
 }
 
 } // namespace TextureManager
index 31dc6fc..b453a82 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.
@@ -56,11 +56,11 @@ ImageUrl::~ImageUrl()
       auto& textureManager = GetImplementation(visualFactory).GetTextureManager();
       if(VisualUrl::TEXTURE == VisualUrl::GetProtocolType(mUrl))
       {
-        textureManager.RemoveExternalTexture(mUrl);
+        textureManager.RemoveExternalTextureByUrl(mUrl);
       }
       else if(VisualUrl::BUFFER == VisualUrl::GetProtocolType(mUrl))
       {
-        textureManager.RemoveEncodedImageBuffer(mUrl);
+        textureManager.RemoveEncodedImageBufferByUrl(mUrl);
       }
     }
   }
index 972b919..84a13cb 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.
@@ -66,7 +66,7 @@ void TextureAsyncLoadingHelper::Load(const TextureManager::TextureId
   LoadingTaskPtr loadingTask;
   if(DALI_UNLIKELY(url.IsBufferResource()))
   {
-    loadingTask = new LoadingTask(++mLoadTaskId, mTextureManager.GetEncodedImageBuffer(url.GetUrl()), desiredSize, fittingMode, samplingMode, orientationCorrection, preMultiplyOnLoad, MakeCallback(this, &TextureAsyncLoadingHelper::AsyncLoadComplete));
+    loadingTask = new LoadingTask(++mLoadTaskId, mTextureManager.GetEncodedImageBuffer(url), desiredSize, fittingMode, samplingMode, orientationCorrection, preMultiplyOnLoad, MakeCallback(this, &TextureAsyncLoadingHelper::AsyncLoadComplete));
   }
   else
   {
index f460893..979839c 100644 (file)
@@ -261,20 +261,36 @@ public:
   /**
    * @copydoc TextureCacheManager::RemoveExternalTexture
    */
-  inline TextureSet RemoveExternalTexture(const std::string& url)
+  inline TextureSet RemoveExternalTexture(const VisualUrl& url)
   {
     return mTextureCacheManager.RemoveExternalTexture(url);
   }
 
   /**
+   * @copydoc TextureCacheManager::RemoveExternalTexture
+   */
+  inline TextureSet RemoveExternalTextureByUrl(const std::string& url)
+  {
+    return RemoveExternalTexture(url);
+  }
+
+  /**
    * @copydoc TextureCacheManager::RemoveEncodedImageBuffer
    */
-  inline EncodedImageBuffer RemoveEncodedImageBuffer(const std::string& url)
+  inline EncodedImageBuffer RemoveEncodedImageBuffer(const VisualUrl& url)
   {
     return mTextureCacheManager.RemoveEncodedImageBuffer(url);
   }
 
   /**
+   * @copydoc TextureCacheManager::RemoveEncodedImageBuffer
+   */
+  inline EncodedImageBuffer RemoveEncodedImageBufferByUrl(const std::string& url)
+  {
+    return RemoveEncodedImageBuffer(url);
+  }
+
+  /**
    * @copydoc TextureCacheManager::UseExternalResource
    */
   inline void UseExternalResource(const VisualUrl& url)
@@ -285,7 +301,7 @@ public:
   /**
    * @copydoc TextureCacheManager::GetEncodedImageBuffer
    */
-  inline EncodedImageBuffer GetEncodedImageBuffer(const std::string& url)
+  inline EncodedImageBuffer GetEncodedImageBuffer(const VisualUrl& url)
   {
     return mTextureCacheManager.GetEncodedImageBuffer(url);
   }
index ce8ee70..cb36843 100644 (file)
@@ -120,7 +120,7 @@ AnimatedVectorImageVisual::~AnimatedVectorImageVisual()
     if(mImageUrl.IsBufferResource())
     {
       TextureManager& textureManager = mFactoryCache.GetTextureManager();
-      textureManager.RemoveEncodedImageBuffer(mImageUrl.GetUrl());
+      textureManager.RemoveEncodedImageBuffer(mImageUrl);
     }
 
     if(mEventCallback)
@@ -433,9 +433,9 @@ void AnimatedVectorImageVisual::OnInitialize(void)
     // EncodedImageBuffer.
     // Reference count will be decreased at destructor of the visual.
     TextureManager& textureManager = mFactoryCache.GetTextureManager();
-    textureManager.UseExternalResource(mImageUrl.GetUrl());
+    textureManager.UseExternalResource(mImageUrl);
 
-    encodedImageBuffer = textureManager.GetEncodedImageBuffer(mImageUrl.GetUrl());
+    encodedImageBuffer = textureManager.GetEncodedImageBuffer(mImageUrl);
   }
 
   mVectorAnimationTask->KeepRasterizedBuffer(mEnableFrameCache);
index c8c7375..2bbf20e 100644 (file)
@@ -220,12 +220,12 @@ ImageVisual::~ImageVisual()
       if(mImageUrl.GetProtocolType() == VisualUrl::TEXTURE)
       {
         TextureManager& textureManager = mFactoryCache.GetTextureManager();
-        textureManager.RemoveExternalTexture(mImageUrl.GetUrl());
+        textureManager.RemoveExternalTexture(mImageUrl);
       }
       else if(mImageUrl.IsBufferResource())
       {
         TextureManager& textureManager = mFactoryCache.GetTextureManager();
-        textureManager.RemoveEncodedImageBuffer(mImageUrl.GetUrl());
+        textureManager.RemoveEncodedImageBuffer(mImageUrl);
       }
     }
 
@@ -605,7 +605,7 @@ void ImageVisual::OnInitialize()
   if(mImageUrl.IsValid() && (mImageUrl.IsBufferResource() || mImageUrl.GetProtocolType() == VisualUrl::TEXTURE))
   {
     TextureManager& textureManager = mFactoryCache.GetTextureManager();
-    textureManager.UseExternalResource(mImageUrl.GetUrl());
+    textureManager.UseExternalResource(mImageUrl);
   }
 
   // Generate geometry and shader. Note that we should check AddOn when generate geometry, due to LoadPolicy::IMMEDIATE case
index 4a3ea1c..12d9596 100644 (file)
@@ -564,7 +564,7 @@ void SvgLoader::RemoveLoad(SvgLoader::SvgLoadId loadId)
           if(DALI_LIKELY(Dali::Adaptor::IsAvailable() && mFactoryCache))
           {
             auto& textureManager = mFactoryCache->GetTextureManager();
-            textureManager.RemoveEncodedImageBuffer(loadInfo.mImageUrl.GetUrl());
+            textureManager.RemoveEncodedImageBuffer(loadInfo.mImageUrl);
           }
         }
 
@@ -666,7 +666,7 @@ void SvgLoader::LoadRequest(SvgLoader::SvgLoadInfo& loadInfo, SvgLoaderObserver*
     if(DALI_LIKELY(Dali::Adaptor::IsAvailable() && mFactoryCache))
     {
       auto& textureManager = mFactoryCache->GetTextureManager();
-      encodedImageBuffer   = textureManager.GetEncodedImageBuffer(loadInfo.mImageUrl.GetUrl());
+      encodedImageBuffer   = textureManager.GetEncodedImageBuffer(loadInfo.mImageUrl);
     }
   }
 
@@ -686,7 +686,7 @@ void SvgLoader::LoadSynchronously(SvgLoader::SvgLoadInfo& loadInfo, SvgLoaderObs
     if(DALI_LIKELY(Dali::Adaptor::IsAvailable() && mFactoryCache))
     {
       auto& textureManager = mFactoryCache->GetTextureManager();
-      encodedImageBuffer   = textureManager.GetEncodedImageBuffer(loadInfo.mImageUrl.GetUrl());
+      encodedImageBuffer   = textureManager.GetEncodedImageBuffer(loadInfo.mImageUrl);
     }
   }
 
index 919cd52..4597727 100644 (file)
@@ -101,7 +101,7 @@ SvgVisual::~SvgVisual()
     if(mImageUrl.IsBufferResource())
     {
       TextureManager& textureManager = mFactoryCache.GetTextureManager();
-      textureManager.RemoveEncodedImageBuffer(mImageUrl.GetUrl());
+      textureManager.RemoveEncodedImageBuffer(mImageUrl);
     }
   }
 }