[dali_1.2.38] Merge branch 'devel/master'
[platform/core/uifw/dali-core.git] / dali / internal / update / rendering / scene-graph-renderer.h
index b72a704..b150ee3 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_SCENE_GRAPH_RENDERER_H
 
 /*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2017 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -119,15 +119,6 @@ public:
   void SetGeometry( Render::Geometry* geometry );
 
   /**
-   * Get the geometry of this renderer
-   * @return the geometry this renderer uses
-   */
-  const Render::Geometry& GetGeometry() const
-  {
-    return *mGeometry;
-  }
-
-  /**
    * Set the depth index
    * @param[in] depthIndex the new depth index to use
    */
@@ -251,21 +242,6 @@ public:
   void SetStencilOperationOnZPass( StencilOperation::Type stencilOperationOnZPass );
 
   /**
-   * Turns on batching feature for the renderer
-   * @param[in] batchingEnabled if true, enables the batching mode for the renderer
-   */
-  void SetBatchingEnabled( bool batchingEnabled );
-
-  /**
-   * Tests whether batching feature is enabled for this renderer
-   * @return batching state
-   */
-  bool IsBatchingEnabled() const
-  {
-    return mBatchingEnabled;
-  }
-
-  /**
    * 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.
@@ -301,7 +277,11 @@ public:
    */
   void TextureSetChanged();
 
-public: // Implementation of ObjectOwnerContainer template methods
+  /**
+   * Called by the TextureSet to notify to the renderer that it is about to be deleted
+   */
+  void TextureSetDeleted();
+
   /**
    * Connect the object to the scene graph
    *
@@ -328,9 +308,6 @@ public: // Implementation of ConnectionChangePropagator
    */
   void RemoveConnectionObserver(ConnectionChangePropagator::Observer& observer){};
 
-public:
-
-
 public: // UniformMap::Observer
   /**
    * @copydoc UniformMap::Observer::UniformMappingsChanged
@@ -385,6 +362,12 @@ private:
    */
   RenderDataProvider* NewRenderDataProvider();
 
+  /**
+   * Helper function to retrieve the blend color.
+   * @return The blend color.
+   */
+  const Vector4& GetBlendColor() const;
+
 private:
 
   CollectedUniformMap          mCollectedUniformMap[2];           ///< Uniform maps collected by the renderer
@@ -393,7 +376,7 @@ private:
   TextureSet*                  mTextureSet;                       ///< The texture set this renderer uses. (Not owned)
   Render::Geometry*            mGeometry;                         ///< The geometry this renderer uses. (Not owned)
   Shader*                      mShader;                           ///< The shader this renderer uses. (Not owned)
-  Vector4*                     mBlendColor;                       ///< The blend color for blending operation
+  OwnerPointer< Vector4 >      mBlendColor;                       ///< The blend color for blending operation
 
   Dali::Internal::Render::Renderer::StencilParameters mStencilParameters;         ///< Struct containing all stencil related options
 
@@ -416,8 +399,6 @@ private:
 
 public:
 
-  bool                         mBatchingEnabled:1;                ///< Flag indicating whether the render supports batching
-
   int                          mDepthIndex;                       ///< Used only in PrepareRenderInstructions
 };
 
@@ -647,16 +628,6 @@ inline void SetStencilOperationOnZPassMessage( EventThreadServices& eventThreadS
   new (slot) LocalType( &renderer, &Renderer::SetStencilOperationOnZPass, stencilOperation );
 }
 
-inline void SetBatchingEnabledMessage( EventThreadServices& eventThreadServices, const Renderer& renderer, bool batchable )
-{
-  typedef MessageValue1< Renderer, bool > LocalType;
-
-  // Reserve some memory inside the message queue
-  unsigned int* slot = eventThreadServices.ReserveMessageSlot( sizeof( LocalType ) );
-
-  new (slot) LocalType( &renderer, &Renderer::SetBatchingEnabled, batchable );
-}
-
 } // namespace SceneGraph
 } // namespace Internal
 } // namespace Dali