From: adam.b Date: Fri, 22 Jul 2016 16:38:36 +0000 (+0100) Subject: The Render::Renderer is created when SceneGraph::Renderer is added to the update... X-Git-Tag: dali_1.1.45~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F12%2F81212%2F4;p=platform%2Fcore%2Fuifw%2Fdali-core.git The Render::Renderer is created when SceneGraph::Renderer is added to the update manager. Change-Id: Ifba0242122b9d651cfcec22a858cbdcc2547a43b --- diff --git a/dali/internal/event/rendering/renderer-impl.cpp b/dali/internal/event/rendering/renderer-impl.cpp index 1f6ceb2..2b80191 100644 --- a/dali/internal/event/rendering/renderer-impl.cpp +++ b/dali/internal/event/rendering/renderer-impl.cpp @@ -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(); } } diff --git a/dali/internal/update/manager/update-manager.cpp b/dali/internal/update/manager/update-manager.cpp index 957062b..b2a52d9 100644 --- a/dali/internal/update/manager/update-manager.cpp +++ b/dali/internal/update/manager/update-manager.cpp @@ -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 ); } } diff --git a/dali/internal/update/rendering/scene-graph-renderer.cpp b/dali/internal/update/rendering/scene-graph-renderer.cpp index a6b720b..636e645 100644 --- a/dali/internal/update/rendering/scene-graph-renderer.cpp +++ b/dali/internal/update/rendering/scene-graph-renderer.cpp @@ -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 { diff --git a/dali/internal/update/rendering/scene-graph-renderer.h b/dali/internal/update/rendering/scene-graph-renderer.h index 2ebddf8..030d25f 100644 --- a/dali/internal/update/rendering/scene-graph-renderer.h +++ b/dali/internal/update/rendering/scene-graph-renderer.h @@ -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