Merge branch 'devel/master' into tizen 65/122265/1 accepted/tizen_common accepted/tizen_ivi accepted/tizen_mobile accepted/tizen_tv accepted/tizen_wearable accepted/tizen/common/20170403.185650 accepted/tizen/ivi/20170403.022353 accepted/tizen/mobile/20170403.022032 accepted/tizen/tv/20170403.022215 accepted/tizen/unified/20170403.022434 accepted/tizen/wearable/20170403.022308 submit/tizen/20170331.124519
authordongsug.song <dongsug.song@samsung.com>
Fri, 31 Mar 2017 03:48:16 +0000 (12:48 +0900)
committerdongsug.song <dongsug.song@samsung.com>
Fri, 31 Mar 2017 03:48:40 +0000 (12:48 +0900)
Change-Id: Icba998e55057ac890bac5d47811ecc5db6fc083e
Signed-off-by: dongsug.song <dongsug.song@samsung.com>
16 files changed:
dali/internal/common/blending-options.cpp
dali/internal/common/blending-options.h
dali/internal/common/core-impl.cpp
dali/internal/common/core-impl.h
dali/internal/common/owner-pointer.h
dali/internal/event/rendering/renderer-impl.cpp
dali/internal/event/rendering/renderer-impl.h
dali/internal/render/renderers/render-renderer.cpp
dali/internal/render/renderers/render-renderer.h
dali/internal/update/manager/update-manager.cpp
dali/internal/update/rendering/scene-graph-renderer.cpp
dali/internal/update/rendering/scene-graph-renderer.h
dali/internal/update/rendering/scene-graph-texture-set.cpp
dali/public-api/object/any.h
dali/public-api/object/handle.h
packaging/dali.spec

index 17668a0..b682fc4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 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.
@@ -251,7 +251,6 @@ BlendingOptions::BlendingOptions()
 
 BlendingOptions::~BlendingOptions()
 {
-  delete mBlendColor;
 }
 
 void BlendingOptions::SetBitmask( unsigned int bitmask )
@@ -315,31 +314,27 @@ BlendEquation::Type BlendingOptions::GetBlendEquationAlpha() const
 
 void BlendingOptions::SetBlendColor( const Vector4& color )
 {
-  if( Vector4::ZERO == color )
+  if( Color::TRANSPARENT == color )
   {
-    if( mBlendColor )
-    {
-      // Discard unnecessary vector
-      delete mBlendColor;
-      mBlendColor = NULL;
-    }
-    return;
-  }
-
-  if( mBlendColor )
-  {
-    *mBlendColor = color;
+    mBlendColor = NULL;
   }
   else
   {
-    // Lazy allocation when non-default is set
-    mBlendColor = new Vector4( color );
+    if( mBlendColor )
+    {
+      *mBlendColor = color;
+    }
+    else
+    {
+      // Lazy allocation when non-default is set
+      mBlendColor = new Vector4( color );
+    }
   }
 }
 
 const Vector4* BlendingOptions::GetBlendColor() const
 {
-  return mBlendColor;
+  return mBlendColor.Get();
 }
 
 } // namespace Internal
index c5284bb..b469c26 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_BLENDING_OPTIONS_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.
@@ -21,6 +21,7 @@
 // INTERNAL INCLUDES
 #include <dali/public-api/rendering/renderer.h>
 #include <dali/public-api/math/vector4.h>
+#include <dali/internal/common/owner-pointer.h>
 
 namespace Dali
 {
@@ -119,7 +120,7 @@ private:
 
   unsigned int mBitmask; ///< A bitmask of blending options
 
-  Vector4* mBlendColor; ///< A heap-allocated color (owned)
+  OwnerPointer< Vector4> mBlendColor; ///< A heap-allocated color (owned)
 
 };
 
index dccaacf..0534dd7 100644 (file)
@@ -83,13 +83,6 @@ Core::Core( RenderController& renderController, PlatformAbstraction& platform,
             GestureManager& gestureManager, ResourcePolicy::DataRetention dataRetentionPolicy)
 : mRenderController( renderController ),
   mPlatform(platform),
-  mGestureEventProcessor(NULL),
-  mEventProcessor(NULL),
-  mUpdateManager(NULL),
-  mRenderManager(NULL),
-  mDiscardQueue(NULL),
-  mNotificationManager(NULL),
-  mShaderFactory(NULL),
   mIsActive(true),
   mProcessingEvent(false)
 {
@@ -165,14 +158,6 @@ Core::~Core()
   // remove (last?) reference to stage
   mStage.Reset();
 
-  delete mEventProcessor;
-  delete mGestureEventProcessor;
-  delete mNotificationManager;
-  delete mShaderFactory;
-  delete mDiscardQueue;
-  delete mUpdateManager;
-  delete mRenderManager;
-  delete mRenderTaskProcessor;
 }
 
 Integration::ContextNotifierInterface* Core::GetContextNotifier()
index d2e4add..17bc172 100644 (file)
@@ -262,20 +262,21 @@ private:
   Integration::PlatformAbstraction&         mPlatform;                    ///< The interface providing platform specific services.
 
   IntrusivePtr<Stage>                       mStage;                       ///< The current stage
-  GestureEventProcessor*                    mGestureEventProcessor;       ///< The gesture event processor
-  EventProcessor*                           mEventProcessor;              ///< The event processor
-  SceneGraph::UpdateManager*                mUpdateManager;               ///< Update manager
-  SceneGraph::RenderManager*                mRenderManager;               ///< Render manager
-  SceneGraph::DiscardQueue*                 mDiscardQueue;                ///< Used to cleanup nodes & resources when no longer in use.
-  NotificationManager*                      mNotificationManager;         ///< Notification manager
   AnimationPlaylistOwner                    mAnimationPlaylist;           ///< For 'Fire and forget' animation support
   OwnerPointer<PropertyNotificationManager> mPropertyNotificationManager; ///< For safe signal emmision of property changed notifications
-  ShaderFactory*                            mShaderFactory;               ///< Shader resource factory
   IntrusivePtr< RelayoutController >        mRelayoutController;          ///< Size negotiation relayout controller
-  SceneGraph::RenderTaskProcessor*          mRenderTaskProcessor;         ///< Handles the processing of render tasks
   bool                                      mIsActive         : 1;        ///< Whether Core is active or suspended
   bool                                      mProcessingEvent  : 1;        ///< True during ProcessEvents()
 
+  OwnerPointer<SceneGraph::RenderTaskProcessor> mRenderTaskProcessor;         ///< Handles the processing of render tasks
+  OwnerPointer<SceneGraph::RenderManager>       mRenderManager;               ///< Render manager
+  OwnerPointer<SceneGraph::UpdateManager>       mUpdateManager;               ///< Update manager
+  OwnerPointer<SceneGraph::DiscardQueue>        mDiscardQueue;                ///< Used to cleanup nodes & resources when no longer in use.
+  OwnerPointer<ShaderFactory>                   mShaderFactory;               ///< Shader resource factory
+  OwnerPointer<NotificationManager>             mNotificationManager;         ///< Notification manager
+  OwnerPointer<GestureEventProcessor>           mGestureEventProcessor;       ///< The gesture event processor
+  OwnerPointer<EventProcessor>                  mEventProcessor;              ///< The event processor
+
   friend class ThreadLocalStorage;
 
 };
index 7b92978..5ce648f 100644 (file)
@@ -38,8 +38,8 @@ public:
    * Default constructor. Creates an OwnerPointer that does not own any object.
    */
   OwnerPointer()
+  : mObject(NULL)
   {
-    mObject = NULL;
   }
 
   /**
@@ -47,8 +47,8 @@ public:
    * @param[in] object A pointer to a heap allocated object.
    */
   OwnerPointer( T* object )
+  : mObject(object)
   {
-    mObject = object;
   }
 
   /**
@@ -56,8 +56,9 @@ public:
    * @param[in] other The pointer that gives away the ownership.
    */
   OwnerPointer( OwnerPointer& other )
+  : mObject(NULL)
   {
-    Init( other );
+    Swap( other );
   }
 
   /**
@@ -68,8 +69,8 @@ public:
   {
     if( this != &other )    // no self-assignment
     {
-      Reset();
-      Init( other );
+      // Creation of temportaty object to prevent premature deletion of object
+      OwnerPointer(other).Swap(*this);
     }
 
     // return self
@@ -183,6 +184,16 @@ public:
     return mObject;
   }
 
+  /**
+   * Swap owned objects
+   */
+  void Swap( OwnerPointer& other )
+  {
+    T* tmp = mObject;
+    mObject = other.mObject;
+    other.mObject = tmp;
+  }
+
   // Handle comparisons - This is a variation of the safe bool idiom
 
   /**
@@ -206,19 +217,6 @@ private:
    */
   void ThisIsSaferThanReturningVoidStar() const {}
 
-private:
-
-  /**
-   * Initialise this pointer from another one.
-   * ownerPointer parameter looses ownership.
-   * @param ownerPointer owner pointer
-   */
-  void Init( OwnerPointer& ownerPointer )
-  {
-    mObject = ownerPointer.mObject;
-    ownerPointer.mObject = NULL;
-  }
-
   // data
   T* mObject; ///< Raw pointer to the object
 };
index 64d5651..3b82ab6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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.
@@ -290,28 +290,6 @@ void Renderer::GetBlendEquation( BlendEquation::Type& equationRgb,
   equationAlpha = mBlendingOptions.GetBlendEquationAlpha();
 }
 
-void Renderer::SetBlendColor( const Vector4& color )
-{
-  if( !mBlendColor )
-  {
-    mBlendColor = new Vector4();
-  }
-  if( *mBlendColor != color )
-  {
-    *mBlendColor = color;
-    SetBlendColorMessage( GetEventThreadServices(), *mSceneObject, *mBlendColor );
-  }
-}
-
-Vector4 Renderer::GetBlendColor() const
-{
-  if( mBlendColor )
-  {
-    return *mBlendColor;
-  }
-  return Color::TRANSPARENT; // GL default
-}
-
 void Renderer::SetIndexedDrawFirstElement( size_t firstElement )
 {
   if( firstElement != mIndexedDrawFirstElement )
@@ -729,14 +707,7 @@ Property::Value Renderer::GetDefaultProperty( Property::Index index ) const
     }
     case Dali::Renderer::Property::BLEND_COLOR:
     {
-      if( mBlendColor )
-      {
-        value = *mBlendColor;
-      }
-      else
-      {
-        value = Color::TRANSPARENT;
-      }
+      value = GetBlendColor();
       break;
     }
     case Dali::Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA:
@@ -858,7 +829,6 @@ int Renderer::GetPropertyComponentIndex( Property::Index index ) const
 
 Renderer::Renderer()
 : mSceneObject(NULL ),
-  mBlendColor( NULL ),
   mDepthIndex( 0 ),
   mIndexedDrawFirstElement( 0 ),
   mIndexedDrawElementCount( 0 ),
@@ -884,6 +854,22 @@ void Renderer::Initialize()
   eventThreadServices.RegisterObject( this );
 }
 
+void Renderer::SetBlendColor( const Vector4& blendColor )
+{
+  mBlendingOptions.SetBlendColor( blendColor );
+  SetBlendColorMessage( GetEventThreadServices(), *mSceneObject, GetBlendColor() );
+}
+
+const Vector4& Renderer::GetBlendColor() const
+{
+  const Vector4* blendColor = mBlendingOptions.GetBlendColor();
+  if( blendColor )
+  {
+    return *blendColor;
+  }
+  return Color::TRANSPARENT; // GL default
+}
+
 Renderer::~Renderer()
 {
   if( EventThreadServices::IsCoreRunning() )
index 20574b3..bd9b8df 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_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.
@@ -137,16 +137,6 @@ public:
    void GetBlendEquation( BlendEquation::Type& equationRgb, BlendEquation::Type& equationAlpha ) const;
 
    /**
-    * @copydoc Dali::Renderer::SetBlendColor()
-    */
-   void SetBlendColor( const Vector4& color );
-
-   /**
-    * @copydoc Dali::Renderer::GetBlendColor()
-    */
-   Vector4 GetBlendColor() const;
-
-   /**
     * @copydoc Dali::Renderer::SetIndexedDrawFirstElement
     */
    void SetIndexedDrawFirstElement( size_t firstElement );
@@ -260,10 +250,29 @@ public: // Default property extensions from Object
   virtual int GetPropertyComponentIndex( Property::Index index ) const;
 
 private: // implementation
+
+  /**
+   * @brief Default constructor.
+   */
   Renderer();
 
+  /**
+   * @brief Initializes the Renderer.
+   */
   void Initialize();
 
+  /**
+   * @brief Sets the blend color.
+   * @param[in] blendColor The blend color to set.
+   */
+  void SetBlendColor( const Vector4& blendColor );
+
+  /**
+   * @brief Retrieves the blend-color.
+   * @return A const reference to the blend-color
+   */
+  const Vector4& GetBlendColor() const;
+
 protected:
   /**
    * A reference counted object may only be deleted by calling Unreference()
@@ -275,26 +284,25 @@ private: // unimplemented methods
   Renderer& operator=( const Renderer& );
 
 private: // data
-  SceneGraph::Renderer* mSceneObject;
-  Vector4* mBlendColor;               ///< Local copy of blend color, pointer only as its rarely used
-  GeometryPtr mGeometry;              ///< Connector that holds the geometry used by this renderer
-  TextureSetPtr mTextureSet;          ///< Connector that holds the texture set used by this renderer
-  ShaderPtr mShader;                  ///< Connector that holds the shader used by this renderer
-
-  int mDepthIndex;
-
-  size_t mIndexedDrawFirstElement;                            ///< Offset of first element to draw from bound index buffer
-  size_t mIndexedDrawElementCount;                            ///< Number of elements to draw
-
-  Render::Renderer::StencilParameters mStencilParameters;     ///< Struct containing all stencil related options
-  BlendingOptions              mBlendingOptions;              ///< Local copy of blending options bitmask
-
-  DepthFunction::Type          mDepthFunction:3;              ///< Local copy of the depth function
-  FaceCullingMode::Type        mFaceCullingMode:2;            ///< Local copy of the mode of face culling
-  BlendMode::Type              mBlendMode:2;                  ///< Local copy of the mode of blending
-  DepthWriteMode::Type         mDepthWriteMode:2;             ///< Local copy of the depth write mode
-  DepthTestMode::Type          mDepthTestMode:2;              ///< Local copy of the depth test mode
-  bool                         mPremultipledAlphaEnabled:1;   ///< Flag indicating whether the Pre-multiplied Alpha Blending is required
+  SceneGraph::Renderer*               mSceneObject;
+  GeometryPtr                         mGeometry;                     ///< Connector that holds the geometry used by this renderer
+  TextureSetPtr                       mTextureSet;                   ///< Connector that holds the texture set used by this renderer
+  ShaderPtr                           mShader;                       ///< Connector that holds the shader used by this renderer
+
+  int                                 mDepthIndex;
+
+  size_t                              mIndexedDrawFirstElement;      ///< Offset of first element to draw from bound index buffer
+  size_t                              mIndexedDrawElementCount;      ///< Number of elements to draw
+
+  Render::Renderer::StencilParameters mStencilParameters;            ///< Struct containing all stencil related options
+  BlendingOptions                     mBlendingOptions;              ///< Local copy of blending options bitmask
+
+  DepthFunction::Type                 mDepthFunction:3;              ///< Local copy of the depth function
+  FaceCullingMode::Type               mFaceCullingMode:2;            ///< Local copy of the mode of face culling
+  BlendMode::Type                     mBlendMode:2;                  ///< Local copy of the mode of blending
+  DepthWriteMode::Type                mDepthWriteMode:2;             ///< Local copy of the depth write mode
+  DepthTestMode::Type                 mDepthTestMode:2;              ///< Local copy of the depth test mode
+  bool                                mPremultipledAlphaEnabled:1;   ///< Flag indicating whether the Pre-multiplied Alpha Blending is required
 };
 
 } // namespace Internal
index c353daf..b59eb20 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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.
@@ -108,7 +108,7 @@ namespace Render
 Renderer* Renderer::New( SceneGraph::RenderDataProvider* dataProvider,
                          Render::Geometry* geometry,
                          unsigned int blendingBitmask,
-                         const Vector4* blendColor,
+                         const Vector4& blendColor,
                          FaceCullingMode::Type faceCullingMode,
                          bool preMultipliedAlphaEnabled,
                          DepthWriteMode::Type depthWriteMode,
@@ -124,7 +124,7 @@ Renderer* Renderer::New( SceneGraph::RenderDataProvider* dataProvider,
 Renderer::Renderer( SceneGraph::RenderDataProvider* dataProvider,
                     Render::Geometry* geometry,
                     unsigned int blendingBitmask,
-                    const Vector4* blendColor,
+                    const Vector4& blendColor,
                     FaceCullingMode::Type faceCullingMode,
                     bool preMultipliedAlphaEnabled,
                     DepthWriteMode::Type depthWriteMode,
@@ -147,15 +147,12 @@ Renderer::Renderer( SceneGraph::RenderDataProvider* dataProvider,
   mUpdateAttributesLocation( true ),
   mPremultipledAlphaEnabled( preMultipliedAlphaEnabled )
 {
-  if(  blendingBitmask != 0u )
+  if( blendingBitmask != 0u )
   {
     mBlendingOptions.SetBitmask( blendingBitmask );
   }
 
-  if( blendColor )
-  {
-    mBlendingOptions.SetBlendColor( *blendColor );
-  }
+  mBlendingOptions.SetBlendColor( blendColor );
 }
 
 void Renderer::Initialize( Context& context )
@@ -394,9 +391,9 @@ void Renderer::SetBlendingBitMask( unsigned int bitmask )
   mBlendingOptions.SetBitmask( bitmask );
 }
 
-void Renderer::SetBlendColor( const Vector4* color )
+void Renderer::SetBlendColor( const Vector4& color )
 {
-  mBlendingOptions.SetBlendColor( *color );
+  mBlendingOptions.SetBlendColor( color );
 }
 
 void Renderer::SetIndexedDrawFirstElement( size_t firstElement )
index 4a3ef30..6332d52 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_RENDER_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.
@@ -115,7 +115,7 @@ public:
   static Renderer* New( SceneGraph::RenderDataProvider* dataProviders,
                         Render::Geometry* geometry,
                         unsigned int blendingBitmask,
-                        const Vector4* blendColor,
+                        const Vector4& blendColor,
                         FaceCullingMode::Type faceCullingMode,
                         bool preMultipliedAlphaEnabled,
                         DepthWriteMode::Type depthWriteMode,
@@ -139,7 +139,7 @@ public:
   Renderer( SceneGraph::RenderDataProvider* dataProviders,
             Render::Geometry* geometry,
             unsigned int blendingBitmask,
-            const Vector4* blendColor,
+            const Vector4& blendColor,
             FaceCullingMode::Type faceCullingMode,
             bool preMultipliedAlphaEnabled,
             DepthWriteMode::Type depthWriteMode,
@@ -187,7 +187,7 @@ public:
    * Set the blend color for blending options
    * @param[in] blendColor The blend color to pass to GL
    */
-  void SetBlendColor( const Vector4* color );
+  void SetBlendColor( const Vector4& color );
 
   /**
    * Set the first element index to draw by the indexed draw
index 8cd9021..dae7194 100644 (file)
@@ -631,6 +631,9 @@ void UpdateManager::RemoveTextureSet( TextureSet* textureSet )
     if( textureSet == mImpl->textureSets[i] )
     {
       mImpl->textureSets.Remove( mImpl->textureSets.Begin() + i );
+
+      // Update manager has ownership of the TextureSet
+      delete textureSet;
       return;
     }
   }
index 243635f..732ca23 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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.
@@ -258,9 +258,9 @@ void Renderer::PrepareRender( BufferIndex updateBufferIndex )
 
     if( mResendFlag & RESEND_BLEND_COLOR )
     {
-      typedef MessageValue1< Render::Renderer, const Vector4* > DerivedType;
+      typedef MessageValue1< Render::Renderer, Vector4 > DerivedType;
       unsigned int* slot = mSceneController->GetRenderQueue().ReserveMessageSlot( updateBufferIndex, sizeof( DerivedType ) );
-      new (slot) DerivedType( mRenderer, &Render::Renderer::SetBlendColor, mBlendColor );
+      new (slot) DerivedType( mRenderer, &Render::Renderer::SetBlendColor, GetBlendColor() );
     }
 
     if( mResendFlag & RESEND_PREMULTIPLIED_ALPHA  )
@@ -433,13 +433,20 @@ void Renderer::SetBlendingOptions( unsigned int options )
 
 void Renderer::SetBlendColor( const Vector4& blendColor )
 {
-  if( !mBlendColor )
+  if( blendColor == Color::TRANSPARENT )
   {
-    mBlendColor = new Vector4( blendColor );
+    mBlendColor = NULL;
   }
   else
   {
-    *mBlendColor = blendColor;
+    if( !mBlendColor )
+    {
+      mBlendColor = new Vector4( blendColor );
+    }
+    else
+    {
+      *mBlendColor = blendColor;
+    }
   }
 
   mResendFlag |= RESEND_BLEND_COLOR;
@@ -536,7 +543,7 @@ void Renderer::ConnectToSceneGraph( SceneController& sceneController, BufferInde
   mSceneController = &sceneController;
   RenderDataProvider* dataProvider = NewRenderDataProvider();
 
-  mRenderer = Render::Renderer::New( dataProvider, mGeometry, mBlendBitmask, mBlendColor, static_cast< FaceCullingMode::Type >( mFaceCullingMode ),
+  mRenderer = Render::Renderer::New( dataProvider, mGeometry, mBlendBitmask, GetBlendColor(), static_cast< FaceCullingMode::Type >( mFaceCullingMode ),
                                          mPremultipledAlphaEnabled, mDepthWriteMode, mDepthTestMode, mDepthFunction, mStencilParameters );
 
   mSceneController->GetRenderMessageDispatcher().AddRenderer( *mRenderer );
@@ -576,6 +583,15 @@ RenderDataProvider* Renderer::NewRenderDataProvider()
   return dataProvider;
 }
 
+const Vector4& Renderer::GetBlendColor() const
+{
+  if( mBlendColor )
+  {
+    return *mBlendColor;
+  }
+  return Color::TRANSPARENT;
+}
+
 Render::Renderer& Renderer::GetRenderer()
 {
   return *mRenderer;
@@ -640,6 +656,12 @@ void Renderer::TextureSetChanged()
   mResendFlag |= RESEND_DATA_PROVIDER;
 }
 
+void Renderer::TextureSetDeleted()
+{
+  mTextureSet = NULL;
+
+  mResendFlag |= RESEND_DATA_PROVIDER;
+}
 void Renderer::ConnectionsChanged( PropertyOwner& object )
 {
   // One of our child objects has changed it's connections. Ensure the uniform
@@ -663,11 +685,7 @@ void Renderer::UniformMappingsChanged( const UniformMap& mappings )
 
 void Renderer::ObservedObjectDestroyed(PropertyOwner& owner)
 {
-  if( reinterpret_cast<PropertyOwner*>(mTextureSet) == &owner )
-  {
-    mTextureSet = NULL;
-  }
-  else if( reinterpret_cast<PropertyOwner*>(mShader) == &owner )
+  if( reinterpret_cast<PropertyOwner*>(mShader) == &owner )
   {
     mShader = NULL;
   }
index b68c7ff..ea1308b 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.
@@ -277,6 +277,11 @@ public:
    */
   void TextureSetChanged();
 
+  /**
+   * Called by the TextureSet to notify to the renderer that it is about to be deleted
+   */
+  void TextureSetDeleted();
+
 public: // Implementation of ObjectOwnerContainer template methods
   /**
    * Connect the object to the scene graph
@@ -361,6 +366,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
@@ -369,7 +380,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
 
index 65aa913..a5e7df8 100644 (file)
@@ -51,6 +51,11 @@ TextureSet::TextureSet()
 
 TextureSet::~TextureSet()
 {
+  size_t rendererCount = mRenderers.Size();
+  for( size_t i(0); i<rendererCount; ++i )
+  {
+    mRenderers[i]->TextureSetDeleted();
+  }
 }
 
 void TextureSet::operator delete( void* ptr )
index 121d266..f28ed48 100644 (file)
@@ -176,14 +176,11 @@ public:
   template<typename Type>
   const Type& Get() const
   {
-
     if ( NULL == mContainer )
     {
       AssertAlways( "Any::Get(). mContainer is NULL" );
     }
-
-    // Check if the value has the same value than the Any type.
-    if( mContainer->GetType() != typeid( Type ) )
+    else if( mContainer->GetType() != typeid( Type ) ) // Check if the value has the same value than the Any type.
     {
       AssertAlways( "Any::Get(). Trying to retrieve a value of a different type than the template one." );
     }
index e72e6ee..74bc362 100644 (file)
@@ -369,6 +369,10 @@ public:
 
 };
 
+/**
+ * @brief This namespace provides a convenient function to create an object with a custom "weight" property.
+ * @SINCE_1_0.0
+ */
 namespace WeightObject
 {
 
index 1b5bb1c..a23a469 100644 (file)
@@ -122,9 +122,6 @@ rm -rf %{buildroot}
 cd build/tizen
 %make_install DALI_DATA_RW_DIR="%{dali_data_rw_dir}" DALI_DATA_RO_DIR="%{dali_data_ro_dir}"
 
-# LICENSE
-mkdir -p %{buildroot}/usr/share/license
-cp -af %{_builddir}/%{name}-%{version}/LICENSE %{buildroot}/usr/share/license/%{name}
 
 
 ##############################
@@ -154,7 +151,7 @@ exit 0
 %defattr(-,root,root,-)
 %{_libdir}/lib%{name}-core.so*
 %defattr(-,app,app,-)
-%{_datadir}/license/%{name}
+%license LICENSE
 
 %files devel
 %defattr(-,root,root,-)