remove refobject based objects and dynamic casting from discard queue 39/27739/3
authorKimmo Hoikka <kimmo.hoikka@samsung.com>
Thu, 18 Sep 2014 11:49:01 +0000 (12:49 +0100)
committerKimmo Hoikka <kimmo.hoikka@samsung.com>
Mon, 22 Sep 2014 16:07:56 +0000 (09:07 -0700)
[Problem] ineffient code
[Cause] unnecessary dynamic cast and discard wue usage
[Solution] remove it

Change-Id: I86ade981c07eabaf08f18aff530a80bf35c4a2ff

dali/internal/update/common/discard-queue.cpp
dali/internal/update/common/discard-queue.h
dali/internal/update/resources/resource-manager.cpp

index 8e3aaf8..a4ce6ee 100644 (file)
@@ -96,29 +96,6 @@ void DiscardQueue::Add( BufferIndex updateBufferIndex, NodeAttachment* attachmen
   }
 }
 
-void DiscardQueue::Add( BufferIndex updateBufferIndex, RefObject& resource )
-{
-  // Check whether resource has GL data
-  GlResourceOwner* glResource = dynamic_cast<GlResourceOwner*>( &resource );
-  if ( glResource )
-  {
-    // Send message to clean-up GL resources in the next Render
-    DoGlCleanup( updateBufferIndex, *glResource, mRenderQueue );
-  }
-
-  // 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 )
-  {
-    mResourceQueue0.push_back( DiscardQueue::ResourcePointer(&resource) );
-  }
-  else
-  {
-    mResourceQueue1.push_back( DiscardQueue::ResourcePointer(&resource) );
-  }
-}
-
 void DiscardQueue::Add( BufferIndex updateBufferIndex, Mesh* mesh )
 {
   DALI_ASSERT_DEBUG( mesh );
index 9418c81..3e69bab 100644 (file)
@@ -88,15 +88,6 @@ public:
   void Add( BufferIndex updateBufferIndex, NodeAttachment* attachment );
 
   /**
-   * Adds an unwanted resource to the discard queue.
-   * If necessary, a message will be sent to clean-up GL resources in the next Render.
-   * @pre This method is not thread-safe, and should only be called from the update-thread.
-   * @param[in] updateBufferIndex The current update buffer index.
-   * @param[in] resource The resource to queue; DiscardQueue takes a reference.
-   */
-  void Add( BufferIndex updateBufferIndex, RefObject& resource );
-
-  /**
    * Adds an unwanted mesh resource to the discard queue.
    * A message will be sent to clean-up GL resources in the next Render.
    * @pre This method is not thread-safe, and should only be called from the update-thread.
index 8e62e65..9d55a44 100644 (file)
@@ -1063,7 +1063,7 @@ void ResourceManager::DiscardDeadResources( BufferIndex updateBufferIndex )
         ModelCacheIter model = mImpl->mModels.find(iter->first);
         DALI_ASSERT_DEBUG( mImpl->mModels.end() != model );
 
-        mImpl->mDiscardQueue.Add( updateBufferIndex, *(model->second) );
+        // model data is owned through intrusive pointers so no need for discard queue
         mImpl->mModels.erase( model );
         break;
       }
@@ -1087,8 +1087,7 @@ void ResourceManager::DiscardDeadResources( BufferIndex updateBufferIndex )
       {
         ShaderCacheIter shaderIter = mImpl->mShaders.find(iter->first);
         DALI_ASSERT_DEBUG( mImpl->mShaders.end() != shaderIter );
-
-        mImpl->mDiscardQueue.Add( updateBufferIndex, *(shaderIter->second) );
+        // shader data is owned through intrusive pointers so no need for discard queue
         mImpl->mShaders.erase( shaderIter );
         break;
       }