From: György Straub Date: Fri, 3 Nov 2017 12:28:08 +0000 (+0000) Subject: [dali_1.2.64] Merge branch 'devel/master' X-Git-Tag: dali_1.9.8~5^2~123 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=2cdc15bcda53ce7feff32cd2358cc1f4d943cbfa;hp=a1ccb5fc3bd382f209da837d5cecdee77cf01bc3 [dali_1.2.64] Merge branch 'devel/master' Change-Id: I69e6fa9081413521984ed4744bccce1db3262954 --- diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp index 6636676..54a69bb 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-application.cpp @@ -62,13 +62,13 @@ void TestApplication::Initialize() // We always need the first update! mStatus.keepUpdating = Integration::KeepUpdating::STAGE_KEEP_RENDERING; - mCore = Dali::Integration::Core::New( - mRenderController, - mPlatformAbstraction, - mGlAbstraction, - mGlSyncAbstraction, - mGestureManager, - mDataRetentionPolicy); + mCore = Dali::Integration::Core::New( mRenderController, + mPlatformAbstraction, + mGlAbstraction, + mGlSyncAbstraction, + mGestureManager, + mDataRetentionPolicy, + false ); mCore->ContextCreated(); mCore->SurfaceResized( mSurfaceWidth, mSurfaceHeight ); @@ -171,7 +171,7 @@ void TestApplication::DoUpdate( unsigned int intervalMilliseconds, const char* l unsigned int nextVSyncTime = mLastVSyncTime + intervalMilliseconds; float elapsedSeconds = intervalMilliseconds / 1e3f; - mCore->Update( elapsedSeconds, mLastVSyncTime, nextVSyncTime, mStatus ); + mCore->Update( elapsedSeconds, mLastVSyncTime, nextVSyncTime, mStatus, false, false ); GetRenderController().Initialize(); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp index bfb390c..53b3fbd 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Control.cpp @@ -834,8 +834,11 @@ int UtcDaliControlResourcesReady(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, smallVisual ); actor.SetSize( 200.f, 200.f ); + + Toolkit::Visual::ResourceStatus resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.IsResourceReady(), false, TEST_LOCATION ); + DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION ); Stage::GetCurrent().Add( actor ); application.SendNotification(); @@ -846,8 +849,10 @@ int UtcDaliControlResourcesReady(void) application.SendNotification(); application.Render(); + resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.IsResourceReady(), true, TEST_LOCATION ); + DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION ); Visual::Base largeVisual = factory.CreateVisual( propertyMapLarge ); largeVisual.SetName("largeVisual"); @@ -857,11 +862,24 @@ int UtcDaliControlResourcesReady(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, largeVisual, false ); + resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL2); + DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION ); + application.SendNotification(); - application.Render(); + resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL2); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.IsResourceReady(), true, TEST_LOCATION ); + DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::PREPARING), TEST_LOCATION ); + + dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL2, true ); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + + resourceStatus = DevelControl::GetVisualResourceStatus(dummyImpl, DummyControl::Property::TEST_VISUAL2); + DALI_TEST_EQUALS( static_cast(resourceStatus), static_cast(Toolkit::Visual::ResourceStatus::READY), TEST_LOCATION ); END_TEST; } diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp index 7b7bc0d..31b147b 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp @@ -476,6 +476,13 @@ int UtcDaliToolkitTextLabelSetPropertyP(void) label.SetProperty( TextLabel::Property::ELLIPSIS, true ); DALI_TEST_CHECK( label.GetProperty( TextLabel::Property::ELLIPSIS ) ); + // Check the layout direction property + label.SetProperty( Actor::Property::LAYOUT_DIRECTION, LayoutDirection::RIGHT_TO_LEFT ); + DALI_TEST_EQUALS( label.GetProperty< int >( Actor::Property::LAYOUT_DIRECTION ), static_cast< int >( LayoutDirection::RIGHT_TO_LEFT ), TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + END_TEST; } diff --git a/dali-toolkit/devel-api/controls/control-devel.cpp b/dali-toolkit/devel-api/controls/control-devel.cpp index 1276e1e..187e518 100644 --- a/dali-toolkit/devel-api/controls/control-devel.cpp +++ b/dali-toolkit/devel-api/controls/control-devel.cpp @@ -83,6 +83,12 @@ bool IsVisualEnabled( const Internal::Control& control, Dali::Property::Index in return controlDataImpl.IsVisualEnabled( index ); } +Toolkit::Visual::ResourceStatus GetVisualResourceStatus( const Internal::Control& control, Dali::Property::Index index ) +{ + const Internal::Control::Impl& controlDataImpl = Internal::Control::Impl::Get( control ); + return controlDataImpl.GetVisualResourceStatus( index ); +} + Dali::Animation CreateTransition( Internal::Control& control, const Toolkit::TransitionData& handle ) { Internal::Control::Impl& controlDataImpl = Internal::Control::Impl::Get( control ); diff --git a/dali-toolkit/devel-api/controls/control-devel.h b/dali-toolkit/devel-api/controls/control-devel.h index f6fd3a4..817efd0 100644 --- a/dali-toolkit/devel-api/controls/control-devel.h +++ b/dali-toolkit/devel-api/controls/control-devel.h @@ -20,6 +20,7 @@ // INTERNAL INCLUDES #include +#include namespace Dali { @@ -214,6 +215,15 @@ DALI_IMPORT_API void EnableVisual( Internal::Control& control, Dali::Property::I DALI_IMPORT_API bool IsVisualEnabled( const Internal::Control& control, Dali::Property::Index index ); /** + * @brief Get the loading state of the visual resource. + * + * @param[in] control The control + * @param[in] index The Property index of the visual + * @return Return the loading status (PREPARING, READY and FAILED) of visual resource + */ +DALI_IMPORT_API Toolkit::Visual::ResourceStatus GetVisualResourceStatus( const Internal::Control& control, Dali::Property::Index index ); + +/** * @brief Create a transition effect on the control. * * Only generates an animation if the properties described in the transition diff --git a/dali-toolkit/devel-api/visual-factory/visual-base.h b/dali-toolkit/devel-api/visual-factory/visual-base.h index fd00cd0..da41237 100644 --- a/dali-toolkit/devel-api/visual-factory/visual-base.h +++ b/dali-toolkit/devel-api/visual-factory/visual-base.h @@ -37,6 +37,14 @@ class Base; namespace Visual { + +enum class ResourceStatus +{ + PREPARING, + READY, + FAILED +}; + /** * @brief A Visual provides a renderer for drawing a control component. A control may have multiple visuals. * diff --git a/dali-toolkit/internal/controls/control/control-data-impl.cpp b/dali-toolkit/internal/controls/control/control-data-impl.cpp index 4f26d11..6ff1efb 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.cpp +++ b/dali-toolkit/internal/controls/control/control-data-impl.cpp @@ -686,6 +686,18 @@ bool Control::Impl::IsResourceReady() const return true; } +Toolkit::Visual::ResourceStatus Control::Impl::GetVisualResourceStatus( Property::Index index ) const +{ + RegisteredVisualContainer::Iterator iter; + if ( FindVisual( index, mVisuals, iter ) ) + { + const Toolkit::Visual::Base visual = (*iter)->visual; + const Internal::Visual::Base& visualImpl = Toolkit::GetImplementation( visual ); + return visualImpl.GetResourceStatus( ); + } + + return Toolkit::Visual::ResourceStatus::PREPARING; +} Dali::Animation Control::Impl::CreateTransition( const Toolkit::TransitionData& handle ) { diff --git a/dali-toolkit/internal/controls/control/control-data-impl.h b/dali-toolkit/internal/controls/control/control-data-impl.h index 2e1d4c9..f6a3288 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.h +++ b/dali-toolkit/internal/controls/control/control-data-impl.h @@ -179,6 +179,11 @@ public: void StartObservingVisual( Toolkit::Visual::Base& visual); /** + * @copydoc Dali::Toolkit::DevelControl::GetVisualResourceStatus() + */ + Toolkit::Visual::ResourceStatus GetVisualResourceStatus( Property::Index index ) const; + + /** * @copydoc Dali::Toolkit::DevelControl::CreateTransition() */ Dali::Animation CreateTransition( const Toolkit::TransitionData& transitionData ); diff --git a/dali-toolkit/internal/controls/image-view/image-view-impl.h b/dali-toolkit/internal/controls/image-view/image-view-impl.h index f335ce7..32867bf 100644 --- a/dali-toolkit/internal/controls/image-view/image-view-impl.h +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.h @@ -2,7 +2,7 @@ #define __DALI_TOOLKIT_INTERNAL_IMAGE_VIEW_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. diff --git a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp index 638cf37..bb84a5b 100644 --- a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp @@ -1205,7 +1205,7 @@ void TextEditor::OnInitialize() // Creates a background visual. Even if the color is transparent it updates the stencil. mStencil.SetProperty( Toolkit::Control::Property::BACKGROUND, - Property::Map().Add( Toolkit::Visual::Property::TYPE, Visual::COLOR ). + Property::Map().Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR ). Add( ColorVisual::Property::MIX_COLOR, Color::TRANSPARENT ) ); // Enable the clipping property. diff --git a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp index 148462a..e8436ed 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp @@ -824,8 +824,9 @@ Vector3 TextLabel::GetNaturalSize() float TextLabel::GetHeightForWidth( float width ) { - Padding padding; - Self().GetPadding( padding ); + Extents padding; + padding = Self().GetProperty( Toolkit::Control::Property::PADDING ); + return mController->GetHeightForWidth( width ) + padding.top + padding.bottom; } @@ -857,9 +858,10 @@ void TextLabel::OnRelayout( const Vector2& size, RelayoutContainer& container ) { DALI_LOG_INFO( gLogFilter, Debug::General, "TextLabel::OnRelayout\n" ); - Padding padding; - Self().GetPadding( padding ); - Vector2 contentSize( size.x - ( padding.left + padding.right ), size.y - ( padding.top + padding.bottom ) ); + Extents padding; + padding = Self().GetProperty( Toolkit::Control::Property::PADDING ); + + Vector2 contentSize( size.x - ( padding.start + padding.end ), size.y - ( padding.top + padding.bottom ) ); const Text::Controller::UpdateTextType updateTextType = mController->Relayout( contentSize ); @@ -871,13 +873,16 @@ void TextLabel::OnRelayout( const Vector2& size, RelayoutContainer& container ) // Update the visual TextVisual::EnableRendererUpdate( mVisual ); - Padding padding; - Self().GetPadding( padding ); + Dali::LayoutDirection::Type layoutDirection = static_cast( Self().GetProperty(Dali::Actor::Property::LAYOUT_DIRECTION).Get() ); + if( Dali::LayoutDirection::RIGHT_TO_LEFT == layoutDirection ) + { + std::swap(padding.start, padding.end); + } Property::Map visualTransform; visualTransform.Add( Toolkit::Visual::Transform::Property::SIZE, contentSize ) .Add( Toolkit::Visual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) ) - .Add( Toolkit::Visual::Transform::Property::OFFSET, Vector2(padding.left, padding.top) ) + .Add( Toolkit::Visual::Transform::Property::OFFSET, Vector2(padding.start, padding.top) ) .Add( Toolkit::Visual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) ) .Add( Toolkit::Visual::Transform::Property::ORIGIN, Toolkit::Align::TOP_BEGIN ) .Add( Toolkit::Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::TOP_BEGIN ); diff --git a/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp b/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp index 4f4b441..9ac0b90 100644 --- a/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp +++ b/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp @@ -449,7 +449,7 @@ void AnimatedImageVisual::StartFirstFrame( TextureSet& textureSet ) mFrameDelayTimer.Start(); DALI_LOG_INFO(gAnimImgLogFilter,Debug::Concise,"ResourceReady()\n"); - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } TextureSet AnimatedImageVisual::PrepareTextureSet() diff --git a/dali-toolkit/internal/visuals/border/border-visual.cpp b/dali-toolkit/internal/visuals/border/border-visual.cpp index da0ec77..2de039b 100644 --- a/dali-toolkit/internal/visuals/border/border-visual.cpp +++ b/dali-toolkit/internal/visuals/border/border-visual.cpp @@ -217,7 +217,7 @@ void BorderVisual::DoSetOnStage( Actor& actor ) actor.AddRenderer( mImpl->mRenderer ); // Border Visual Generated and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } void BorderVisual::DoCreatePropertyMap( Property::Map& map ) const diff --git a/dali-toolkit/internal/visuals/color/color-visual.cpp b/dali-toolkit/internal/visuals/color/color-visual.cpp index f1dfc4d..2d8008f 100644 --- a/dali-toolkit/internal/visuals/color/color-visual.cpp +++ b/dali-toolkit/internal/visuals/color/color-visual.cpp @@ -131,7 +131,7 @@ void ColorVisual::DoSetOnStage( Actor& actor ) actor.AddRenderer( mImpl->mRenderer ); // Color Visual generated and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } void ColorVisual::DoCreatePropertyMap( Property::Map& map ) const diff --git a/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp b/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp index 7c3f791..2686a50 100644 --- a/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp +++ b/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp @@ -280,7 +280,7 @@ void GradientVisual::DoSetOnStage( Actor& actor ) actor.AddRenderer( mImpl->mRenderer ); // Gradient Visual generated and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } void GradientVisual::DoCreatePropertyMap( Property::Map& map ) const diff --git a/dali-toolkit/internal/visuals/image/image-visual.cpp b/dali-toolkit/internal/visuals/image/image-visual.cpp index ea3c49c..59cccd5 100644 --- a/dali-toolkit/internal/visuals/image/image-visual.cpp +++ b/dali-toolkit/internal/visuals/image/image-visual.cpp @@ -869,7 +869,7 @@ void ImageVisual::DoSetOnStage( Actor& actor ) mPlacementActor.Reset(); // Image loaded and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } } @@ -927,6 +927,7 @@ void ImageVisual::DoCreatePropertyMap( Property::Map& map ) const map.Insert( Toolkit::ImageVisual::Property::WRAP_MODE_V, mWrapModeV ); map.Insert( Toolkit::ImageVisual::Property::ATLASING, mAttemptAtlasing ); + if( mMaskingData != NULL ) { map.Insert( Toolkit::ImageVisual::Property::ALPHA_MASK_URL, mMaskingData->mAlphaMaskUrl.GetUrl() ); @@ -963,6 +964,12 @@ void ImageVisual::OnSetTransform() } } +bool ImageVisual::IsResourceReady() const +{ + return ( mImpl->mResourceStatus == Toolkit::Visual::ResourceStatus::READY || + mImpl->mResourceStatus == Toolkit::Visual::ResourceStatus::FAILED ); +} + Shader ImageVisual::GetImageShader( VisualFactoryCache& factoryCache, bool atlasing, bool defaultTextureWrapping ) { Shader shader; @@ -1035,6 +1042,7 @@ void ImageVisual::UploadCompleted() // From Texture Manager void ImageVisual::UploadComplete( bool loadingSuccess, int32_t textureId, TextureSet textureSet, bool usingAtlas, const Vector4& atlasRectangle ) { + Toolkit::Visual::ResourceStatus resourceStatus; Actor actor = mPlacementActor.GetHandle(); if( actor ) { @@ -1054,6 +1062,8 @@ void ImageVisual::UploadComplete( bool loadingSuccess, int32_t textureId, Textur sampler.SetWrapMode( mWrapModeU, mWrapModeV ); textureSet.SetSampler( 0u, sampler ); mImpl->mRenderer.SetTextures(textureSet); + + resourceStatus = Toolkit::Visual::ResourceStatus::READY; } else { @@ -1063,9 +1073,11 @@ void ImageVisual::UploadComplete( bool loadingSuccess, int32_t textureId, Textur mImpl->mRenderer.SetTextures( textureSet ); ApplyImageToSampler( brokenImage ); + + resourceStatus = Toolkit::Visual::ResourceStatus::FAILED; } // Image loaded and ready to display - ResourceReady(); + ResourceReady( resourceStatus ); } } mLoading = false; diff --git a/dali-toolkit/internal/visuals/image/image-visual.h b/dali-toolkit/internal/visuals/image/image-visual.h index e485904..729185a 100644 --- a/dali-toolkit/internal/visuals/image/image-visual.h +++ b/dali-toolkit/internal/visuals/image/image-visual.h @@ -229,6 +229,11 @@ protected: */ virtual void OnSetTransform(); + /** + * @copydoc Visual::Base::IsResourceReady + */ + virtual bool IsResourceReady() const; + public: /** diff --git a/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp b/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp index 92d30ab..0bea8c6 100644 --- a/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp +++ b/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp @@ -520,7 +520,7 @@ void MeshVisual::DoSetOnStage( Actor& actor ) actor.AddRenderer( mImpl->mRenderer ); // Mesh loaded and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } void MeshVisual::DoCreatePropertyMap( Property::Map& map ) const diff --git a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp index df9b2ff..d5976dd 100755 --- a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp +++ b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp @@ -316,7 +316,7 @@ void NPatchVisual::DoSetOnStage( Actor& actor ) actor.AddRenderer( mImpl->mRenderer ); // npatch loaded and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } void NPatchVisual::DoSetOffStage( Actor& actor ) diff --git a/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp b/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp index 51a9b29..28afa6a 100644 --- a/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp +++ b/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp @@ -420,7 +420,7 @@ void PrimitiveVisual::DoSetOnStage( Actor& actor ) actor.AddRenderer( mImpl->mRenderer ); // Primitive generated and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } void PrimitiveVisual::DoCreatePropertyMap( Property::Map& map ) const diff --git a/dali-toolkit/internal/visuals/svg/svg-visual.cpp b/dali-toolkit/internal/visuals/svg/svg-visual.cpp index 95a7786..a9d0c0c 100644 --- a/dali-toolkit/internal/visuals/svg/svg-visual.cpp +++ b/dali-toolkit/internal/visuals/svg/svg-visual.cpp @@ -112,7 +112,7 @@ void SvgVisual::DoSetOnStage( Actor& actor ) mPlacementActor = actor; // SVG visual needs it's size set before it can be rasterized hence set ResourceReady once on stage - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } void SvgVisual::DoSetOffStage( Actor& actor ) @@ -233,7 +233,7 @@ void SvgVisual::ApplyRasterizedImage( PixelData rasterizedPixelData ) } // Svg loaded and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } } diff --git a/dali-toolkit/internal/visuals/text/text-visual.cpp b/dali-toolkit/internal/visuals/text/text-visual.cpp index d70edce..f5817ea 100755 --- a/dali-toolkit/internal/visuals/text/text-visual.cpp +++ b/dali-toolkit/internal/visuals/text/text-visual.cpp @@ -627,7 +627,7 @@ void TextVisual::UpdateRenderer() } // Nothing else to do if the relayout size is zero. - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); return; } @@ -703,7 +703,7 @@ void TextVisual::UpdateRenderer() control.AddRenderer( mImpl->mRenderer ); // Text rendered and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } } } diff --git a/dali-toolkit/internal/visuals/visual-base-data-impl.cpp b/dali-toolkit/internal/visuals/visual-base-data-impl.cpp index 27ba4a0..374ff68 100644 --- a/dali-toolkit/internal/visuals/visual-base-data-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-data-impl.cpp @@ -125,7 +125,7 @@ Internal::Visual::Base::Impl::Impl() mMixColorIndex( Property::INVALID_INDEX ), mOpacityIndex( Property::INVALID_INDEX ), mFlags( 0 ), - mResourceReady( false ) + mResourceStatus( Toolkit::Visual::ResourceStatus::PREPARING ) { } diff --git a/dali-toolkit/internal/visuals/visual-base-data-impl.h b/dali-toolkit/internal/visuals/visual-base-data-impl.h index 1d92f6e..79c099c 100644 --- a/dali-toolkit/internal/visuals/visual-base-data-impl.h +++ b/dali-toolkit/internal/visuals/visual-base-data-impl.h @@ -125,7 +125,7 @@ struct Base::Impl Property::Index mMixColorIndex; Property::Index mOpacityIndex; int mFlags; - bool mResourceReady:1; + Toolkit::Visual::ResourceStatus mResourceStatus; }; } // namespace Visual diff --git a/dali-toolkit/internal/visuals/visual-base-impl.cpp b/dali-toolkit/internal/visuals/visual-base-impl.cpp index bd31fe7..f486a0f 100644 --- a/dali-toolkit/internal/visuals/visual-base-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-impl.cpp @@ -414,25 +414,28 @@ void Visual::Base::RemoveResourceObserver( Visual::ResourceObserver& observer ) mImpl->mResourceObserver = NULL; } -void Visual::Base::ResourceReady() +void Visual::Base::ResourceReady(Toolkit::Visual::ResourceStatus resourceStatus) { - if( mImpl->mResourceReady ) + if( mImpl->mResourceStatus != resourceStatus ) { - // only inform the observer the first time the resource is ready - return; - } - mImpl->mResourceReady = true; + mImpl->mResourceStatus = resourceStatus; - if( mImpl->mResourceObserver ) - { - // observer is currently a control impl - mImpl->mResourceObserver->ResourceReady( *this ); + if( mImpl->mResourceObserver ) + { + // observer is currently a control impl + mImpl->mResourceObserver->ResourceReady( *this ); + } } } bool Visual::Base::IsResourceReady() const { - return mImpl->mResourceReady; + return ( mImpl->mResourceStatus == Toolkit::Visual::ResourceStatus::READY ); +} + +Toolkit::Visual::ResourceStatus Visual::Base::GetResourceStatus() const +{ + return mImpl->mResourceStatus; } Renderer Visual::Base::GetRenderer() diff --git a/dali-toolkit/internal/visuals/visual-base-impl.h b/dali-toolkit/internal/visuals/visual-base-impl.h index c450d91..f9534e4 100644 --- a/dali-toolkit/internal/visuals/visual-base-impl.h +++ b/dali-toolkit/internal/visuals/visual-base-impl.h @@ -226,13 +226,19 @@ public: /** * @brief Called when the visuals resources are loaded / ready */ - void ResourceReady(); + void ResourceReady( Toolkit::Visual::ResourceStatus resourceStatus ); /** * @brief Called when the visuals resources are loaded / ready * @return true if ready, false otherwise */ - bool IsResourceReady() const; + virtual bool IsResourceReady() const; + + /** + * @brief Get the loading state of the visual resource + * @return Return the loading status (PREPARING, READY and FAILED) of visual resource + */ + Toolkit::Visual::ResourceStatus GetResourceStatus() const; protected: diff --git a/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp b/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp index 1c79d72..7d6e6e6 100644 --- a/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp +++ b/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp @@ -176,7 +176,7 @@ void WireframeVisual::DoSetOnStage( Actor& actor ) actor.AddRenderer( mImpl->mRenderer ); // Wireframe generated and ready to display - ResourceReady(); + ResourceReady( Toolkit::Visual::ResourceStatus::READY ); } void WireframeVisual::InitializeRenderer() diff --git a/dali-toolkit/public-api/dali-toolkit-version.cpp b/dali-toolkit/public-api/dali-toolkit-version.cpp index e5636bf..a9f5cdc 100644 --- a/dali-toolkit/public-api/dali-toolkit-version.cpp +++ b/dali-toolkit/public-api/dali-toolkit-version.cpp @@ -31,7 +31,7 @@ namespace Toolkit const unsigned int TOOLKIT_MAJOR_VERSION = 1; const unsigned int TOOLKIT_MINOR_VERSION = 2; -const unsigned int TOOLKIT_MICRO_VERSION = 63; +const unsigned int TOOLKIT_MICRO_VERSION = 64; const char * const TOOLKIT_BUILD_DATE = __DATE__ " " __TIME__; #ifdef DEBUG_ENABLED diff --git a/packaging/dali-toolkit.spec b/packaging/dali-toolkit.spec index aee7679..326f03a 100644 --- a/packaging/dali-toolkit.spec +++ b/packaging/dali-toolkit.spec @@ -1,6 +1,6 @@ Name: dali-toolkit Summary: Dali 3D engine Toolkit -Version: 1.2.63 +Version: 1.2.64 Release: 1 Group: System/Libraries License: Apache-2.0 and BSD-3-Clause and MIT