The Render::Renderer is created when SceneGraph::Renderer is added to the update... 12/81212/4
authoradam.b <adam.b@samsung.com>
Fri, 22 Jul 2016 16:38:36 +0000 (17:38 +0100)
committeradam.b <adam.b@samsung.com>
Fri, 22 Jul 2016 17:18:07 +0000 (18:18 +0100)
Change-Id: Ifba0242122b9d651cfcec22a858cbdcc2547a43b

dali/internal/event/rendering/renderer-impl.cpp
dali/internal/update/manager/update-manager.cpp
dali/internal/update/rendering/scene-graph-renderer.cpp
dali/internal/update/rendering/scene-graph-renderer.h

index 1f6ceb2..2b80191 100644 (file)
@@ -695,7 +695,6 @@ void Renderer::Connect()
 {
   if( mOnStageCount == 0 )
   {
-    OnStageConnectMessage( GetEventThreadServices(), *mSceneObject );
     mTextureSetConnector.OnStageConnect();
   }
   ++mOnStageCount;
@@ -706,7 +705,6 @@ void Renderer::Disconnect()
   --mOnStageCount;
   if( mOnStageCount == 0 )
   {
-    OnStageDisconnectMessage( GetEventThreadServices(), *mSceneObject);
     mTextureSetConnector.OnStageDisconnect();
   }
 }
index 957062b..b2a52d9 100644 (file)
@@ -867,10 +867,7 @@ void UpdateManager::UpdateRenderers( BufferIndex bufferIndex )
     //Apply constraints
     ConstrainPropertyOwner( *rendererContainer[i], bufferIndex );
 
-    if( rendererContainer[i]->IsReferenced() )
-    {
-      rendererContainer[i]->PrepareRender( bufferIndex );
-    }
+    rendererContainer[i]->PrepareRender( bufferIndex );
   }
 }
 
index a6b720b..636e645 100644 (file)
@@ -126,7 +126,6 @@ Renderer::Renderer()
   mIndexedDrawFirstElement( 0u ),
   mIndexedDrawElementsCount( 0u ),
   mBlendBitmask( 0u ),
-  mReferenceCount( 0u ),
   mRegenerateUniformMap( 0u ),
   mResendFlag( 0u ),
   mDepthFunction( DepthFunction::LESS ),
@@ -158,7 +157,6 @@ Renderer::~Renderer()
     mShader->RemoveConnectionObserver(*this);
     mShader=NULL;
   }
-
 }
 
 void Renderer::operator delete( void* ptr )
@@ -425,45 +423,22 @@ void Renderer::SetDepthFunction( DepthFunction::Type depthFunction )
   mResendFlag |= RESEND_DEPTH_FUNCTION;
 }
 
-//Called when a node with this renderer is added to the stage
-void Renderer::OnStageConnect()
-{
-  ++mReferenceCount;
-  if( !mRenderer)
-  {
-    RenderDataProvider* dataProvider = NewRenderDataProvider();
-
-    mRenderer = Render::Renderer::New( dataProvider, mGeometry,
-                                       mBlendBitmask, mBlendColor,
-                                       static_cast< FaceCullingMode::Type >( mFaceCullingMode ),
-                                       mPremultipledAlphaEnabled,
-                                       mDepthWriteMode,
-                                       mDepthTestMode,
-                                       mDepthFunction );
-
-    mSceneController->GetRenderMessageDispatcher().AddRenderer( *mRenderer );
-    mResendFlag = 0;
-  }
-}
-
-//Called when the node with this renderer has gone out of the stage
-void Renderer::OnStageDisconnect()
-{
-  --mReferenceCount;
-  if( mReferenceCount == 0 )
-  {
-    mSceneController->GetRenderMessageDispatcher().RemoveRenderer( *mRenderer );
-    mRenderer = NULL;
-  }
-}
-
 //Called when SceneGraph::Renderer is added to update manager ( that happens when an "event-thread renderer" is created )
 void Renderer::ConnectToSceneGraph( SceneController& sceneController, BufferIndex bufferIndex )
 {
   mRegenerateUniformMap = REGENERATE_UNIFORM_MAP;
   mSceneController = &sceneController;
-}
+  RenderDataProvider* dataProvider = NewRenderDataProvider();
 
+  mRenderer = Render::Renderer::New( dataProvider, mGeometry,
+                                     mBlendBitmask, mBlendColor,
+                                     static_cast< FaceCullingMode::Type >( mFaceCullingMode ),
+                                     mPremultipledAlphaEnabled,
+                                     mDepthWriteMode,
+                                     mDepthTestMode,
+                                     mDepthFunction );
+  mSceneController->GetRenderMessageDispatcher().AddRenderer( *mRenderer );
+}
 
 //Called just before destroying the scene-graph renderer ( when the "event-thread renderer" is no longer referenced )
 void Renderer::DisconnectFromSceneGraph( SceneController& sceneController, BufferIndex bufferIndex )
@@ -473,8 +448,8 @@ void Renderer::DisconnectFromSceneGraph( SceneController& sceneController, Buffe
   {
     mSceneController->GetRenderMessageDispatcher().RemoveRenderer( *mRenderer );
     mRenderer = NULL;
-    mSceneController = NULL;
   }
+  mSceneController = NULL;
 }
 
 RenderDataProvider* Renderer::NewRenderDataProvider()
@@ -516,7 +491,7 @@ Render::Renderer& Renderer::GetRenderer()
 const CollectedUniformMap& Renderer::GetUniformMap( BufferIndex bufferIndex ) const
 {
   return mCollectedUniformMap[bufferIndex];
-};
+}
 
 void Renderer::GetReadyAndComplete( bool& ready, bool& complete ) const
 {
index 2ebddf8..030d25f 100644 (file)
@@ -186,16 +186,6 @@ public:
   void SetDepthFunction( DepthFunction::Type depthFunction );
 
   /**
-   * Called when an actor with this renderer is added to the stage
-   */
-  void OnStageConnect();
-
-  /*
-   * Called when an actor with this renderer is removed from the stage
-   */
-  void OnStageDisconnect();
-
-  /**
    * Prepare the object for rendering.
    * This is called by the UpdateManager when an object is due to be rendered in the current frame.
    * @param[in] updateBufferIndex The current update buffer index.
@@ -227,14 +217,6 @@ public:
   Opacity GetOpacity( BufferIndex updateBufferIndex, const Node& node ) const;
 
   /**
-   * Query whether the renderer is currently in use by an actor on the stage
-   */
-  bool IsReferenced() const
-  {
-    return mReferenceCount > 0;
-  }
-
-  /**
    * Called by the TextureSet to notify to the renderer that it has changed
    */
   void TextureSetChanged();
@@ -336,7 +318,6 @@ private:
   size_t                mIndexedDrawFirstElement;       ///< first element index to be drawn using indexed draw
   size_t                mIndexedDrawElementsCount;      ///< number of elements to be drawn using indexed draw
   unsigned int          mBlendBitmask;                  ///< The bitmask of blending options
-  unsigned int          mReferenceCount;                ///< Number of nodes currently using this renderer
   unsigned int          mRegenerateUniformMap;          ///< 2 if the map should be regenerated, 1 if it should be copied.
   unsigned short        mResendFlag;                    ///< Indicate whether data should be resent to the renderer
 
@@ -502,28 +483,6 @@ inline void SetDepthFunctionMessage( EventThreadServices& eventThreadServices, c
   new (slot) LocalType( &renderer, &Renderer::SetDepthFunction, depthFunction );
 }
 
-inline void OnStageConnectMessage( EventThreadServices& eventThreadServices, const Renderer& renderer )
-{
-  typedef Message< Renderer > LocalType;
-
-  // Reserve some memory inside the message queue
-  unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) );
-
-  // Construct message in the message queue memory; note that delete should not be called on the return value
-  new (slot) LocalType( &renderer, &Renderer::OnStageConnect );
-}
-
-inline void OnStageDisconnectMessage( EventThreadServices& eventThreadServices, const Renderer& renderer )
-{
-  typedef Message< Renderer > LocalType;
-
-  // Reserve some memory inside the message queue
-  unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) );
-
-  // Construct message in the message queue memory; note that delete should not be called on the return value
-  new (slot) LocalType( &renderer, &Renderer::OnStageDisconnect );
-}
-
 } // namespace SceneGraph
 } // namespace Internal
 } // namespace Dali