Change depth-index to non-animatable property. 07/41607/5
authorFrancisco Santos <f1.santos@samsung.com>
Tue, 16 Jun 2015 15:02:48 +0000 (16:02 +0100)
committerFrancisco Santos <f1.santos@samsung.com>
Mon, 22 Jun 2015 10:43:46 +0000 (11:43 +0100)
Change-Id: I5f27e5912de519cbd672cd1ced32cb81ae152411

12 files changed:
automated-tests/src/dali/utc-Dali-Renderer.cpp
dali/internal/event/actors/renderer-impl.cpp
dali/internal/event/actors/renderer-impl.h
dali/internal/event/events/hit-test-algorithm-impl.cpp
dali/internal/update/manager/prepare-render-instructions.cpp
dali/internal/update/manager/update-manager.cpp
dali/internal/update/node-attachments/node-attachment.h
dali/internal/update/node-attachments/scene-graph-renderable-attachment.h
dali/internal/update/node-attachments/scene-graph-renderer-attachment.cpp
dali/internal/update/node-attachments/scene-graph-renderer-attachment.h
dali/public-api/actors/renderer.cpp
dali/public-api/actors/renderer.h

index f845606..ce0489e 100644 (file)
@@ -210,7 +210,7 @@ int UtcDaliRendererSetGetDepthIndex(void)
 {
   TestApplication application;
 
-  tet_infoline("Test SetDepthIndex, GetCurrentDepthIndex");
+  tet_infoline("Test SetDepthIndex, GetDepthIndex");
 
   Material material = CreateMaterial(1.0f);
   Geometry geometry = CreateQuadGeometry();
@@ -222,21 +222,21 @@ int UtcDaliRendererSetGetDepthIndex(void)
 
   application.SendNotification();
   application.Render(0);
-  DALI_TEST_EQUALS( renderer.GetCurrentDepthIndex(), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( renderer.GetDepthIndex(), 0, TEST_LOCATION );
   DALI_TEST_EQUALS( renderer.GetProperty<int>(Renderer::Property::DEPTH_INDEX), 0, TEST_LOCATION );
 
   renderer.SetDepthIndex(1);
 
   application.SendNotification();
   application.Render(0);
-  DALI_TEST_EQUALS( renderer.GetCurrentDepthIndex(), 1, TEST_LOCATION );
+  DALI_TEST_EQUALS( renderer.GetDepthIndex(), 1, TEST_LOCATION );
   DALI_TEST_EQUALS( renderer.GetProperty<int>(Renderer::Property::DEPTH_INDEX), 1, TEST_LOCATION );
 
   renderer.SetDepthIndex(10);
 
   application.SendNotification();
   application.Render(0);
-  DALI_TEST_EQUALS( renderer.GetCurrentDepthIndex(), 10, TEST_LOCATION );
+  DALI_TEST_EQUALS( renderer.GetDepthIndex(), 10, TEST_LOCATION );
   DALI_TEST_EQUALS( renderer.GetProperty<int>(Renderer::Property::DEPTH_INDEX), 10, TEST_LOCATION );
 
   END_TEST;
index 0c83a08..feee2b1 100644 (file)
@@ -38,7 +38,7 @@ namespace
  *            |name          |type     |writable|animatable|constraint-input|enum for index-checking|
  */
 DALI_PROPERTY_TABLE_BEGIN
-DALI_PROPERTY( "depth-index", INTEGER,  true, true, true, Dali::Renderer::Property::DEPTH_INDEX )
+DALI_PROPERTY( "depth-index", INTEGER, true, false, false, Dali::Renderer::Property::DEPTH_INDEX )
 DALI_PROPERTY_TABLE_END( DEFAULT_OBJECT_PROPERTY_START_INDEX )
 
 const ObjectImplHelper<DEFAULT_PROPERTY_COUNT> RENDERER_IMPL = { DEFAULT_PROPERTY_DETAILS };
@@ -79,18 +79,16 @@ Material* Renderer::GetMaterial() const
 
 void Renderer::SetDepthIndex( int depthIndex )
 {
-  SetDepthIndexMessage( GetEventThreadServices(), *mSceneObject, depthIndex );
+  if ( mDepthIndex != depthIndex )
+  {
+    mDepthIndex = depthIndex;
+    SetDepthIndexMessage( GetEventThreadServices(), *mSceneObject, depthIndex );
+  }
 }
 
-int Renderer::GetCurrentDepthIndex() const
+int Renderer::GetDepthIndex() const
 {
-  int depthIndex = 0;
-  if( mSceneObject )
-  {
-    BufferIndex bufferIndex = GetEventThreadServices().GetEventBufferIndex();
-    depthIndex = mSceneObject->mDepthIndex[bufferIndex];
-  }
-  return depthIndex;
+  return mDepthIndex;
 }
 
 SceneGraph::RendererAttachment* Renderer::GetRendererSceneObject()
@@ -166,7 +164,7 @@ Property::Value Renderer::GetDefaultProperty( Property::Index index ) const
   {
     case Dali::Renderer::Property::DEPTH_INDEX:
     {
-      value = GetCurrentDepthIndex();
+      value = GetDepthIndex();
     }
     break;
   }
@@ -195,18 +193,6 @@ const SceneGraph::PropertyBase* Renderer::GetSceneObjectAnimatableProperty( Prop
       &Renderer::FindAnimatableProperty,
       &Renderer::FindCustomProperty,
       index );
-
-    if( property == NULL && index < DEFAULT_PROPERTY_MAX_COUNT )
-    {
-      switch(index)
-      {
-        case Dali::Renderer::Property::DEPTH_INDEX:
-        {
-          property = &mSceneObject->mDepthIndex;
-        }
-        break;
-      }
-    }
   }
 
   return property;
@@ -224,18 +210,6 @@ const PropertyInputImpl* Renderer::GetSceneObjectInputProperty( Property::Index
                                                      &Renderer::FindCustomProperty,
                                                      index );
     property = static_cast<const PropertyInputImpl*>( baseProperty );
-
-    if( property == NULL && index < DEFAULT_PROPERTY_MAX_COUNT )
-    {
-      switch(index)
-      {
-        case Dali::Renderer::Property::DEPTH_INDEX:
-        {
-          property = &mSceneObject->mDepthIndex;
-        }
-        break;
-      }
-    }
   }
 
   return property;
@@ -269,6 +243,7 @@ void Renderer::Disconnect()
 
 Renderer::Renderer()
 : mSceneObject(NULL),
+  mDepthIndex(0),
   mOnStage(false)
 {
 }
index f02a3ac..b7abd84 100644 (file)
@@ -79,9 +79,9 @@ public:
   void SetDepthIndex( int depthIndex );
 
   /**
-   * @copydoc Dali::Renderer::GetCurrentDepthIndex()
+   * @copydoc Dali::Renderer::GetDepthIndex()
    */
-  int GetCurrentDepthIndex() const;
+  int GetDepthIndex() const;
 
   /**
    * @brief Get the scene graph object ( the node attachment )
@@ -207,6 +207,7 @@ private: // data
   SceneGraph::RendererAttachment* mSceneObject;
   ObjectConnector<Geometry> mGeometryConnector; ///< Connector that holds the geometry used by this renderer
   ObjectConnector<Material> mMaterialConnector; ///< Connector that holds the material used by this renderer
+  int mDepthIndex;
   bool mOnStage;
 };
 
index 218c779..683ec4a 100644 (file)
@@ -225,7 +225,7 @@ HitActor HitTestWithinLayer( Actor& actor,
             {
               if ( actor.GetRendererCount() )
               {
-                hit.depth = actor.GetRendererAt( 0 ).GetCurrentDepthIndex();
+                hit.depth = actor.GetRendererAt( 0 ).GetDepthIndex();
               }
               else
               {
index dde9c68..b3a03ab 100644 (file)
@@ -204,7 +204,7 @@ inline void AddRendererToRenderList( BufferIndex updateBufferIndex,
     RenderItem& item = renderList.GetNextFreeItem();
     const Renderer& renderer = renderable.GetRenderer();
     item.SetRenderer( const_cast< Renderer* >( &renderer ) );
-    item.SetDepthIndex( renderable.GetDepthIndex(updateBufferIndex) );
+    item.SetDepthIndex( renderable.GetDepthIndex() );
 
     // save MV matrix onto the item
     Matrix& modelViewMatrix = item.GetModelViewMatrix();
index 53391bc..2731ae8 100644 (file)
@@ -697,16 +697,6 @@ void UpdateManager::ResetNodeProperty( Node& node )
   BufferIndex bufferIndex = mSceneGraphBuffers.GetUpdateBufferIndex();
 
   node.ResetToBaseValues( bufferIndex );
-
-  // @todo MESH_REWORK Only perform this step for RendererAttachments - consider
-  // storing them again? Split out to separate scene graph object (called e.g. RendererPropertyOwner) owned by UpdateManager
-  // It is after all, a property owner, and always requires resetting...
-  // The depth index should not be an animatable property... and probably not even
-  // a constraint input? (Double buffering will slow down the sort algorithm slightly)
-  if( node.HasAttachment() )
-  {
-    node.GetAttachment().ResetToBaseValues( bufferIndex );
-  }
 }
 
 void UpdateManager::ResetProperties()
index a7d3402..7803450 100644 (file)
@@ -122,12 +122,6 @@ public:
   // Update methods
 
   /**
-   * Called to reset attachment's properties to base values.
-   * Attachments without properties should not override this method
-   */
-  virtual void ResetToBaseValues(BufferIndex bufferIndex) { }
-
-  /**
    * Called when the attachment or it's owning node is flagged as dirty during scene graph updates.
    * Allows derived classes to perform extra processing
    * @param[in] updateBufferIndex The current update buffer index.
index 3f87a6b..0f01208 100644 (file)
@@ -248,7 +248,7 @@ public: // API for derived classes
    * Get the depth index for the attachment
    * @param[in] bufferIndex The current update buffer index.
    */
-  virtual int GetDepthIndex(BufferIndex bufferIndex)
+  virtual int GetDepthIndex()
   {
     return static_cast<int>( mSortModifier );
   }
index 0ded538..33fc2e7 100644 (file)
@@ -159,9 +159,9 @@ void RendererAttachment::SetSortAttributes( BufferIndex bufferIndex, RendererWit
   sortAttributes.geometry = mGeometry;
 }
 
-void RendererAttachment::SetDepthIndex( BufferIndex updateBufferIndex, int depthIndex )
+void RendererAttachment::SetDepthIndex( int depthIndex )
 {
-  mDepthIndex.Bake(updateBufferIndex, depthIndex);
+  mDepthIndex = depthIndex;
 
   if( mParent )
   {
@@ -170,11 +170,6 @@ void RendererAttachment::SetDepthIndex( BufferIndex updateBufferIndex, int depth
   }
 }
 
-void RendererAttachment::ResetToBaseValues( BufferIndex updateBufferIndex )
-{
-  mDepthIndex.ResetToBaseValue( updateBufferIndex );
-}
-
 Renderer& RendererAttachment::GetRenderer()
 {
   return *mRenderer;
index bd71042..2c93f40 100644 (file)
@@ -127,23 +127,18 @@ public:
 
   /**
    * Set the depth index
-   * @param[in] bufferIndex The buffer index
    * @param[in] depthIndex the new depth index to use
    */
-  void SetDepthIndex( BufferIndex bufferIndex, int depthIndex );
+  void SetDepthIndex( int depthIndex );
 
 protected: // From NodeAttachment
   /**
-   * @copydoc NodeAttachment::ResetToBaseValues
-   */
-  virtual void ResetToBaseValues( BufferIndex updateBufferIndex );
-
-  /**
-   * @param[in] bufferIndex The buffer index
+   * @brief Get the depth index
+   * @return The depth index
    */
-  virtual int GetDepthIndex( BufferIndex bufferIndex )
+  virtual int GetDepthIndex()
   {
-    return mDepthIndex[bufferIndex];
+    return mDepthIndex;
   }
 
   /**
@@ -241,7 +236,7 @@ private:
 
 public: // Properties
 
-  AnimatableProperty<int> mDepthIndex; ///< Used only in PrepareRenderInstructions
+  int mDepthIndex; ///< Used only in PrepareRenderInstructions
 };
 
 // Messages for RendererAttachment
@@ -270,7 +265,7 @@ inline void SetGeometryMessage( EventThreadServices& eventThreadServices, const
 
 inline void SetDepthIndexMessage( EventThreadServices& eventThreadServices, const RendererAttachment& attachment, int depthIndex )
 {
-  typedef MessageDoubleBuffered1< RendererAttachment, int > LocalType;
+  typedef MessageValue1< RendererAttachment, int > LocalType;
 
   // Reserve some memory inside the message queue
   unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) );
index e9705f3..aaf2c75 100644 (file)
@@ -85,9 +85,9 @@ void Renderer::SetDepthIndex( int depthIndex )
   GetImplementation(*this).SetDepthIndex( depthIndex );
 }
 
-int Renderer::GetCurrentDepthIndex()
+int Renderer::GetDepthIndex()
 {
-  return GetImplementation(*this).GetCurrentDepthIndex();
+  return GetImplementation(*this).GetDepthIndex();
 }
 
 Renderer::Renderer( Internal::Renderer* pointer )
index e718fb2..9963f05 100644 (file)
@@ -141,7 +141,7 @@ public:
    * @sa SetDepthIndex()
    * @return the depth index
    */
-  int GetCurrentDepthIndex();
+  int GetDepthIndex();
 
 public:
   /**