X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftoolkit-vector-animation-renderer.cpp;h=2ccf2c1ed29037971923edefccf0ac5e8c41dc82;hb=abc8459e18c5a7f8730c9493885fd067126520cb;hp=cf52774ea6e5ff7e400375ff822a08d1cd019684;hpb=0ab03fd31caa2fed67992675e3f2b69cc5b894c5;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-animation-renderer.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-animation-renderer.cpp index cf52774..2ccf2c1 100755 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-animation-renderer.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-vector-animation-renderer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -19,6 +19,10 @@ #include #include #include +#include +#include +#include +#include namespace Dali { @@ -29,17 +33,28 @@ namespace Internal namespace Adaptor { +namespace +{ +Dali::Internal::Adaptor::VectorAnimationRenderer* gVectorAnimationRenderer = nullptr; +} + class VectorAnimationRenderer: public Dali::BaseObject { public: - VectorAnimationRenderer( const std::string& url ) - : mUrl( url ), + VectorAnimationRenderer() + : mUrl(), mRenderer(), mWidth( 0 ), mHeight( 0 ), + mTotalFrameNumber(VECTOR_ANIMATION_TOTAL_FRAME_NUMBER), mPreviousFrame( 0 ), - mFrameRate( 60.0f ) + mDelayTime(0), + mDroppedFrames(0), + mFrameRate( 60.0f ), + mTestFrameDrop(false), + mNeedDroppedFrames(false), + mEventThreadCallback( new EventThreadCallback( MakeCallback( this, &VectorAnimationRenderer::OnTriggered ) ) ) { mCount++; @@ -54,6 +69,22 @@ public: mCount--; } + bool Load(const std::string& url) + { + mUrl = url; + if(mUrl == "invalid.json") + { + return false; + } + else if(mUrl == "framedrop.json") + { + // Change total frame number for test + mTotalFrameNumber = 200; + mTestFrameDrop = true; + } + return true; + } + void SetRenderer( Dali::Renderer renderer ) { mRenderer = renderer; @@ -83,6 +114,25 @@ public: bool Render( uint32_t frameNumber ) { + if(mTestFrameDrop) + { + std::this_thread::sleep_for(std::chrono::milliseconds(static_cast(mDelayTime))); + mTestFrameDrop = false; + mNeedDroppedFrames = true; + } + else if(mNeedDroppedFrames) + { + mDroppedFrames = (frameNumber > mPreviousFrame) ? frameNumber - mPreviousFrame - 1: frameNumber + (mTotalFrameNumber - mPreviousFrame) - 1; + mNeedTrigger = true; + mNeedDroppedFrames = false; + } + + if( mNeedTrigger ) + { + mEventThreadCallback->Trigger(); + mNeedTrigger = false; + } + if( frameNumber == 1 && mPreviousFrame != frameNumber ) { mPreviousFrame = frameNumber; @@ -95,7 +145,7 @@ public: uint32_t GetTotalFrameNumber() const { - return VECTOR_ANIMATION_TOTAL_FRAME_NUMBER; + return mTotalFrameNumber; } float GetFrameRate() const @@ -133,20 +183,32 @@ public: return mUploadCompletedSignal; } + void OnTriggered() + { + } + public: static uint32_t mCount; + static bool mNeedTrigger; std::string mUrl; Dali::Renderer mRenderer; uint32_t mWidth; uint32_t mHeight; + uint32_t mTotalFrameNumber; uint32_t mPreviousFrame; + uint32_t mDelayTime; + uint32_t mDroppedFrames; float mFrameRate; + bool mTestFrameDrop; + bool mNeedDroppedFrames; Dali::VectorAnimationRenderer::UploadCompletedSignalType mUploadCompletedSignal; + std::unique_ptr< EventThreadCallback > mEventThreadCallback; }; uint32_t VectorAnimationRenderer::mCount = 0; +bool VectorAnimationRenderer::mNeedTrigger = true; inline VectorAnimationRenderer& GetImplementation( Dali::VectorAnimationRenderer& renderer ) { @@ -171,9 +233,11 @@ inline const VectorAnimationRenderer& GetImplementation( const Dali::VectorAnima /********************************* PUBLIC CLASS *******************************/ /********************************************************************************/ -VectorAnimationRenderer VectorAnimationRenderer::New( const std::string& url ) +VectorAnimationRenderer VectorAnimationRenderer::New() { - Internal::Adaptor::VectorAnimationRenderer* animationRenderer = new Internal::Adaptor::VectorAnimationRenderer( url ); + Internal::Adaptor::VectorAnimationRenderer* animationRenderer = new Internal::Adaptor::VectorAnimationRenderer(); + + Internal::Adaptor::gVectorAnimationRenderer = animationRenderer; return VectorAnimationRenderer( animationRenderer ); } @@ -206,6 +270,11 @@ void VectorAnimationRenderer::Finalize() { } +bool VectorAnimationRenderer::Load(const std::string& url) +{ + return Internal::Adaptor::GetImplementation( *this ).Load(url); +} + void VectorAnimationRenderer::SetRenderer( Renderer renderer ) { Internal::Adaptor::GetImplementation( *this ).SetRenderer( renderer ); @@ -250,5 +319,28 @@ VectorAnimationRenderer::UploadCompletedSignalType& VectorAnimationRenderer::Upl return Internal::Adaptor::GetImplementation( *this ).UploadCompletedSignal(); } -} // namespace Dali; +} // namespace Dali + +namespace Test +{ +namespace VectorAnimationRenderer +{ + +void RequestTrigger() +{ + Dali::Internal::Adaptor::VectorAnimationRenderer::mNeedTrigger = true; +} + +void DelayRendering(uint32_t delay) +{ + Dali::Internal::Adaptor::gVectorAnimationRenderer->mDelayTime = delay; +} + +uint32_t GetDroppedFrames() +{ + return Dali::Internal::Adaptor::gVectorAnimationRenderer->mDroppedFrames; +} + +} // VectorAnimationRenderer +} // Test