Delete sync object at DiscardResource() 25/320325/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Wed, 13 Nov 2024 07:02:43 +0000 (16:02 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Wed, 13 Nov 2024 07:08:16 +0000 (16:08 +0900)
Since we don't queueing Resource of sync object,
we should call delete for Discard cases.

Change-Id: I6a5a905b7cd6142c3dc59ef399374c8552d88904
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali/internal/graphics/gles-impl/egl-graphics-controller.cpp
dali/internal/graphics/gles-impl/egl-sync-object.cpp
dali/internal/graphics/gles-impl/gles-sync-object.cpp

index 035b13bfa604a7234ecf103bd75e05d7feee74de..0c42e7eb4eb95dea252faaa1ac449f5fa6b703e4 100644 (file)
@@ -88,6 +88,38 @@ struct GLESDeleter
   }
 };
 
+template<>
+struct GLESDeleter<GLES::SyncObject>
+{
+  GLESDeleter() = default;
+
+  void operator()(GLES::SyncObject* object)
+  {
+    // Destroy and delete object otherwise
+    if(DALI_LIKELY(object))
+    {
+      object->DestroyResource();
+    }
+    delete object;
+  }
+};
+
+template<>
+struct GLESDeleter<EGL::SyncObject>
+{
+  GLESDeleter() = default;
+
+  void operator()(EGL::SyncObject* object)
+  {
+    // Destroy and delete object otherwise
+    if(DALI_LIKELY(object))
+    {
+      object->DestroyResource();
+    }
+    delete object;
+  }
+};
+
 /**
  * @brief Helper function allocating graphics object
  *
index bfcccd6a10db0ffbccd66fc9dec9f544cf1c8968..519a5de0b9f9d0d3d694300969da57dabf2bf70b 100644 (file)
@@ -55,9 +55,8 @@ bool SyncObject::InitializeResource()
 
 void SyncObject::DiscardResource()
 {
-  // Called from custom deleter.
   // Don't use discard queue, drop immediately.
-  DestroyResource();
+  DALI_ASSERT_ALWAYS(false && "SyncObject don't support DiscardResource() method. Please check your code.");
 }
 
 bool SyncObject::IsSynced()
index bfaccecf43cf18ea35756d89ee87c08d675c409e..3e29a791f1c44a6f3c5eda645b0d4bfceb08d5a2 100644 (file)
@@ -60,9 +60,8 @@ bool SyncObject::InitializeResource()
 
 void SyncObject::DiscardResource()
 {
-  // Called from custom deleter.
   // Don't use discard queue, drop immediately.
-  DestroyResource();
+  DALI_ASSERT_ALWAYS(false && "SyncObject don't support DiscardResource() method. Please check your code.");
 }
 
 bool SyncObject::IsSynced()