Messages and ownership of update objects
[platform/core/uifw/dali-core.git] / dali / internal / update / common / discard-queue.cpp
index 164035b..0e68aca 100644 (file)
@@ -79,6 +79,41 @@ void DiscardQueue::Add( BufferIndex updateBufferIndex, NodeAttachment* attachmen
   }
 }
 
+void DiscardQueue::Add( BufferIndex updateBufferIndex, Geometry* geometry )
+{
+  DALI_ASSERT_DEBUG( NULL != geometry );
+
+  // The GL resources will now be freed in frame N
+  // The Update for frame N+1 may occur in parallel with the rendering of frame N
+  // Queue the node for destruction in frame N+2
+  if ( 0u == updateBufferIndex )
+  {
+    mGeometryQueue0.PushBack( geometry );
+  }
+  else
+  {
+    mGeometryQueue1.PushBack( geometry );
+  }
+}
+
+void DiscardQueue::Add( BufferIndex updateBufferIndex, Material* material )
+{
+  DALI_ASSERT_DEBUG( NULL != material );
+
+  // The GL resources will now be freed in frame N
+  // The Update for frame N+1 may occur in parallel with the rendering of frame N
+  // Queue the node for destruction in frame N+2
+  if ( 0u == updateBufferIndex )
+  {
+    mMaterialQueue0.PushBack( material );
+  }
+  else
+  {
+    mMaterialQueue1.PushBack( material );
+  }
+}
+
+
 void DiscardQueue::Add( BufferIndex updateBufferIndex, Shader* shader )
 {
   DALI_ASSERT_DEBUG( NULL != shader );
@@ -107,12 +142,16 @@ void DiscardQueue::Clear( BufferIndex updateBufferIndex )
     mNodeQueue0.Clear();
     mAttachmentQueue0.Clear();
     mShaderQueue0.Clear();
+    mGeometryQueue0.Clear();
+    mMaterialQueue0.Clear();
   }
   else
   {
     mNodeQueue1.Clear();
     mAttachmentQueue1.Clear();
     mShaderQueue1.Clear();
+    mGeometryQueue1.Clear();
+    mMaterialQueue1.Clear();
   }
 }