X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali%2Futc-Dali-RenderTask.cpp;h=69e80e9bd7e0411342748ad75b3acb9fd4ce2697;hb=0495953dba33e35e17d01887f4bf01dc96f7eb4b;hp=3cb20762233ad17fb6a8c64e2084488d0f89c5f3;hpb=5a29e17b6ffd242265e806ac5d0be8826fae4ece;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/automated-tests/src/dali/utc-Dali-RenderTask.cpp b/automated-tests/src/dali/utc-Dali-RenderTask.cpp index 3cb2076..69e80e9 100644 --- a/automated-tests/src/dali/utc-Dali-RenderTask.cpp +++ b/automated-tests/src/dali/utc-Dali-RenderTask.cpp @@ -18,9 +18,14 @@ #include #include -#include +#include +#include #include #include +#include + +#define BOOLSTR(x) ((x)?"T":"F") + using namespace Dali; @@ -34,64 +39,45 @@ void utc_dali_render_task_cleanup(void) test_return_value = TET_PASS; } +/** + * APIs: + * + * Constructor, Destructor, DownCast, New, copy constructor, assignment operator + * + * SetSourceActor 2+ve, 1-ve + * GetSourceActor 1+ve, 1-ve + * SetExclusive 2+ve, 0-ve + * IsExclusive 2+ve, 0-ve + * SetInputEnabled 1+ve, 0-ve + * GetInputEnabled 1+ve, 0-ve + * SetCameraActor 1+ve, 1-ve + * GetCameraActor 1+ve, 1-ve + * SetTargetFrameBuffer 1+ve, 1-ve + * GetTargetFrameBuffer 1+ve, 1-ve + * SetScreenToFrameBufferFunction 1+ve, 1-ve + * GetScreenToFrameBufferFunction 1+ve, 1-ve + * SetScreenToFrameBufferMappingActor 1+ve, 1-ve + * GetScreenToFrameBufferMappingActor 1+ve, 1-ve + * SetViewportPosition 1+ve + * GetCurrentViewportPosition 1+ve + * SetViewportSize 1+ve + * GetCurrentViewportSize 1+ve + * SetViewport 2+ve, 1-ve + * GetViewport 2+ve, 1-ve + * SetClearColor 1+ve, 1-ve + * GetClearColor 1+ve, 1-ve + * SetClearEnabled 1+ve, 1-ve + * GetClearEnabled 1+ve, 1-ve + * SetCullMode + * GetCullMode + * SetRefreshRate Many + * GetRefreshRate 1+ve + * FinishedSignal 1+ve + */ + namespace // unnamed namespace { -class TestNativeImage : public NativeImage -{ -public: - int mWidth; - int mHeight; - TestNativeImage(int width, int height) - : mWidth(width), - mHeight(height) - {} - - virtual bool GlExtensionCreate() {return true;}; - - /** - * Destroy the GL resource for the NativeImage. - * e.g. For the EglImageKHR extension, this corresponds to calling eglDestroyImageKHR() - * @pre There is a GL context for the current thread. - */ - virtual void GlExtensionDestroy() {}; - - /** - * Use the NativeImage as a texture for rendering - * @pre There is a GL context for the current thread. - * @return A GL error code - */ - virtual unsigned int TargetTexture() {return 0;}; - - /** - * Called in each NativeTexture::Bind() call to allow implementation specific operations. - * The correct texture sampler has already been bound before the function gets called. - * @pre glAbstraction is being used by context in current thread - */ - virtual void PrepareTexture() {} - - /** - * Returns the width of the NativeImage - * @return width - */ - virtual unsigned int GetWidth() const {return mWidth;} - - /** - * Returns the height of the NativeImage - * @return height - */ - virtual unsigned int GetHeight() const {return mHeight;} - - /** - * Returns the internal pixel NativeImage::PixelFormat of the NativeImage - * @return pixel format - */ - virtual Pixel::Format GetPixelFormat() const { return Pixel::RGBA8888; } -protected: - ~TestNativeImage(){} -}; - - const int RENDER_FRAME_INTERVAL = 16; ///< Duration of each frame in ms. (at approx 60FPS) /* @@ -181,9 +167,9 @@ bool TestScreenToFrameBufferFunction( Vector2& coordinates ) return true; } -ImageActor CreateLoadingImage(TestApplication& application, std::string filename, Image::LoadPolicy loadPolicy, Image::ReleasePolicy releasePolicy) +ImageActor CreateLoadingImage(TestApplication& application, std::string filename, ResourceImage::LoadPolicy loadPolicy, Image::ReleasePolicy releasePolicy) { - Image image = Image::New(filename, loadPolicy, releasePolicy); + Image image = ResourceImage::New(filename, loadPolicy, releasePolicy); DALI_TEST_CHECK( image ); application.SendNotification(); application.Render(16); @@ -201,7 +187,7 @@ void CompleteImageLoad(TestApplication& application, Integration::ResourceId res ids.push_back( 23 ); application.GetGlAbstraction().SetNextTextureIds( ids ); - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, true ); + Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::DISCARD ); Integration::ResourcePointer resource(bitmap); bitmap->GetPackedPixelsProfile()->ReserveBuffer(Pixel::RGBA8888, 80, 80, 80, 80); @@ -213,7 +199,7 @@ void FailImageLoad(TestApplication& application, Integration::ResourceId resourc application.GetPlatform().SetResourceLoadFailed(resourceId, Integration::FailureUnknown); } -void ReloadImage(TestApplication& application, Image image) +void ReloadImage(TestApplication& application, ResourceImage image) { application.GetPlatform().ClearReadyResources(); application.GetPlatform().DiscardRequest(); @@ -236,15 +222,15 @@ RenderTask CreateRenderTask(TestApplication& application, FrameBufferImage frameBufferImage; if( glSync ) { - NativeImagePtr testNativeImagePtr = new TestNativeImage(10, 10); - frameBufferImage= FrameBufferImage::New( *testNativeImagePtr.Get() ); + NativeImageInterfacePtr testNativeImagePtr = TestNativeImage::New(10, 10); + frameBufferImage= FrameBufferImage::New( *(testNativeImagePtr.Get()) ); } else { frameBufferImage = FrameBufferImage::New( 10, 10 ); } - // Don't draw output framebuffer + // Don't draw output framebuffer // ' RenderTask newTask = taskList.CreateTask(); newTask.SetCameraActor( offscreenCamera ); @@ -258,8 +244,7 @@ RenderTask CreateRenderTask(TestApplication& application, return newTask; } - -bool UpdateRender(TestApplication& application, TraceCallStack& callStack, bool testDrawn, bool& finishedSig, bool testFinished ) +bool UpdateRender(TestApplication& application, TraceCallStack& callStack, bool testDrawn, bool& finishedSig, bool testFinished, bool testKeepUpdating ) { finishedSig = false; callStack.Reset(); @@ -276,19 +261,72 @@ bool UpdateRender(TestApplication& application, TraceCallStack& callStack, bool sigPassed = ! finishedSig; } + bool drawResult = callStack.FindMethod("DrawElements") || callStack.FindMethod("DrawArrays"); + bool drawPassed = false; if( testDrawn ) { - drawPassed = callStack.FindMethod("DrawElements") || callStack.FindMethod("DrawArrays"); + drawPassed = drawResult; } else { - drawPassed = ! callStack.FindMethod("DrawElements") && ! callStack.FindMethod("DrawArrays") ; + drawPassed = !drawResult; } - tet_printf("UpdateRender: drawPassed:%s sigPassed:%s (Expected: %s %s)\n", drawPassed?"T":"F", sigPassed?"T":"F", testDrawn?"T":"F", testFinished?"T":"F"); + bool keepUpdating = (application.GetUpdateStatus() != 0); + bool keepUpdatingPassed = false; + if( testKeepUpdating ) + { + keepUpdatingPassed = keepUpdating; + } + else + { + keepUpdatingPassed = !keepUpdating; + } + + bool result = (sigPassed && drawPassed && keepUpdatingPassed); + + tet_printf("UpdateRender: Expected: Draw:%s Signal:%s Keep Updating: %s Actual: Draw:%s Signal:%s KeepUpdating: %s %s\n", + BOOLSTR(testDrawn), BOOLSTR(testFinished), BOOLSTR(testKeepUpdating), + BOOLSTR(drawResult), BOOLSTR(finishedSig), BOOLSTR(keepUpdating), + result ? "Passed":"Failed"); - return (sigPassed && drawPassed); + return result; +} + +// The functor to be used in the hit-test algorithm to check whether the actor is hittable. +bool IsActorHittableFunction(Actor actor, Dali::HitTestAlgorithm::TraverseType type) +{ + bool hittable = false; + + switch (type) + { + case Dali::HitTestAlgorithm::CHECK_ACTOR: + { + // Check whether the actor is visible and not fully transparent. + if( actor.IsVisible() + && actor.GetCurrentWorldColor().a > 0.01f) // not FULLY_TRANSPARENT + { + + hittable = true; + } + break; + } + case Dali::HitTestAlgorithm::DESCEND_ACTOR_TREE: + { + if( actor.IsVisible() ) // Actor is visible, if not visible then none of its children are visible. + { + hittable = true; + } + break; + } + default: + { + break; + } + } + + return hittable; } } // unnamed namespace @@ -300,7 +338,7 @@ bool UpdateRender(TestApplication& application, TraceCallStack& callStack, bool /****************************************************************************************************/ /****************************************************************************************************/ -int UtcDaliRenderTaskDownCast(void) +int UtcDaliRenderTaskDownCast01(void) { TestApplication application; @@ -319,11 +357,92 @@ int UtcDaliRenderTaskDownCast(void) END_TEST; } -int UtcDaliRenderTaskSetSourceActor(void) +int UtcDaliRenderTaskDownCast02(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::DownCast()"); + + Actor actor = Actor::New(); + + RenderTask task = RenderTask::DownCast( actor ); + DALI_TEST_CHECK( ! task ); + + END_TEST; +} + +int UtcDaliRenderTaskSetSourceActorN(void) +{ + TestApplication application; + tet_infoline("Testing RenderTask::SetSourceActor() Negative - try with empty actor handle"); + Stage stage = Stage::GetCurrent(); + + Actor srcActor; + + RenderTaskList taskList = stage.GetRenderTaskList(); + RenderTask renderTask = taskList.CreateTask(); + renderTask.SetSourceActor(srcActor); + + application.SendNotification(); + application.Render(); + + DALI_TEST_CHECK( ! renderTask.GetSourceActor() ); + END_TEST; +} + + +int UtcDaliRenderTaskSetSourceActorP01(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetSourceActor() Positive - check that setting a non-renderable actor stops existing source actor being rendered "); + + Stage stage = Stage::GetCurrent(); + + const std::vector& boundTextures = application.GetGlAbstraction().GetBoundTextures( GL_TEXTURE0 ); + + RenderTaskList taskList = stage.GetRenderTaskList(); + + RenderTask task = taskList.GetTask( 0u ); + + Actor actor = task.GetSourceActor(); + DALI_TEST_CHECK( actor ); + + std::vector ids; + ids.push_back( 7 ); + application.GetGlAbstraction().SetNextTextureIds( ids ); + + BufferImage img = BufferImage::New( 1,1 ); + ImageActor newActor = ImageActor::New( img ); + newActor.SetSize(1,1); + stage.Add( newActor ); + + Actor nonRenderableActor = Actor::New(); + stage.Add( nonRenderableActor ); + + // Stop the newActor from being rendered by changing the source actor + DALI_TEST_CHECK( nonRenderableActor ); + task.SetSourceActor( nonRenderableActor ); + DALI_TEST_CHECK( task.GetSourceActor() != actor ); + DALI_TEST_CHECK( task.GetSourceActor() == nonRenderableActor ); + + // Update & Render nothing! + application.GetGlAbstraction().ClearBoundTextures(); + application.SendNotification(); + application.Render(); + + // Check that nothing was rendered + DALI_TEST_EQUALS( boundTextures.size(), 0u, TEST_LOCATION ); + + END_TEST; +} + + +int UtcDaliRenderTaskSetSourceActorP02(void) { TestApplication application; - tet_infoline("Testing RenderTask::SetSourceActor()"); + tet_infoline("Testing RenderTask::SetSourceActor() Positive - check that switching source from a non-renderable to a renderable actor causes the texture to be drawn"); Stage stage = Stage::GetCurrent(); @@ -340,7 +459,7 @@ int UtcDaliRenderTaskSetSourceActor(void) ids.push_back( 7 ); application.GetGlAbstraction().SetNextTextureIds( ids ); - BitmapImage img = BitmapImage::New( 1,1 ); + BufferImage img = BufferImage::New( 1,1 ); ImageActor newActor = ImageActor::New( img ); newActor.SetSize(1,1); stage.Add( newActor ); @@ -403,11 +522,11 @@ int UtcDaliRenderTaskSetSourceActorOffStage(void) ids.push_back( expectedTextureId ); application.GetGlAbstraction().SetNextTextureIds( ids ); - BitmapImage img = BitmapImage::New( 1,1 ); + BufferImage img = BufferImage::New( 1,1 ); ImageActor newActor = ImageActor::New( img ); newActor.SetSize(1,1); task.SetSourceActor( newActor ); - // Don't add newActor to stage yet + // Don't add newActor to stage yet //' // Update & Render with the actor initially off-stage application.GetGlAbstraction().ClearBoundTextures(); @@ -464,7 +583,7 @@ int UtcDaliRenderTaskSetSourceActorEmpty(void) ids.push_back( expectedTextureId ); application.GetGlAbstraction().SetNextTextureIds( ids ); - BitmapImage img = BitmapImage::New( 1,1 ); + BufferImage img = BufferImage::New( 1,1 ); ImageActor newActor = ImageActor::New( img ); newActor.SetSize(1,1); stage.Add( newActor ); @@ -502,11 +621,11 @@ int UtcDaliRenderTaskSetSourceActorEmpty(void) END_TEST; } -int UtcDaliRenderTaskGetSourceActor(void) +int UtcDaliRenderTaskGetSourceActorP01(void) { TestApplication application; - tet_infoline("Testing RenderTask::GetSourceActor()"); + tet_infoline("Testing RenderTask::GetSourceActor() Check the default render task has a valid source actor"); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); @@ -521,11 +640,48 @@ int UtcDaliRenderTaskGetSourceActor(void) END_TEST; } +int UtcDaliRenderTaskGetSourceActorP02(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetSourceActor() Create a new render task, Add a new actor to the stage and set it as the source of the new render task. Get its source actor and check that it is equivalent to what was set."); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + RenderTask task = taskList.CreateTask(); + Actor actor = Actor::New(); + Stage::GetCurrent().Add(actor); + task.SetSourceActor( actor ); + + DALI_TEST_EQUALS( actor, task.GetSourceActor(), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliRenderTaskGetSourceActorN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetSourceActor() Try with empty handle"); + + RenderTask task; + try + { + Actor actor = task.GetSourceActor(); + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + + END_TEST; +} + int UtcDaliRenderTaskSetExclusive(void) { TestApplication application; - tet_infoline("Testing RenderTask::SetExclusive()"); + tet_infoline("Testing RenderTask::SetExclusive() Check that exclusion works"); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); @@ -537,7 +693,7 @@ int UtcDaliRenderTaskSetExclusive(void) ids.push_back( 10 ); // 10 = actor3 application.GetGlAbstraction().SetNextTextureIds( ids ); - BitmapImage img1 = BitmapImage::New( 1,1 ); + BufferImage img1 = BufferImage::New( 1,1 ); ImageActor actor1 = ImageActor::New( img1 ); actor1.SetSize(1,1); Stage::GetCurrent().Add( actor1 ); @@ -555,7 +711,7 @@ int UtcDaliRenderTaskSetExclusive(void) DALI_TEST_EQUALS( boundTextures[0], 8u/*unique to actor1*/, TEST_LOCATION ); } - BitmapImage img2 = BitmapImage::New( 1,1 ); + BufferImage img2 = BufferImage::New( 1,1 ); ImageActor actor2 = ImageActor::New( img2 ); actor2.SetSize(1,1); @@ -579,7 +735,7 @@ int UtcDaliRenderTaskSetExclusive(void) DALI_TEST_EQUALS( boundTextures[1], 8u/*unique to actor1*/, TEST_LOCATION ); } - BitmapImage img3 = BitmapImage::New( 1,1 ); + BufferImage img3 = BufferImage::New( 1,1 ); ImageActor actor3 = ImageActor::New( img3 ); actor3.SetSize(1,1); @@ -658,11 +814,72 @@ int UtcDaliRenderTaskSetExclusive(void) END_TEST; } -int UtcDaliRenderTaskIsExclusive(void) +int UtcDaliRenderTaskSetExclusive02(void) { TestApplication application; - tet_infoline("Testing RenderTask::IsExclusive()"); + tet_infoline("Testing RenderTask::SetExclusive() Check that changing from exclusive to not-exclusive works"); + + std::vector ids; + ids.push_back( 8 ); // 8 = actor1 + application.GetGlAbstraction().SetNextTextureIds( ids ); + + BufferImage img1 = BufferImage::New( 1,1 ); + ImageActor actor1 = ImageActor::New( img1 ); + actor1.SetSize(1,1); + Stage::GetCurrent().Add( actor1 ); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + RenderTask task = taskList.CreateTask(); + + task.SetSourceActor( actor1 ); + task.SetExclusive(true); // Actor should only render once + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& drawTrace = gl.GetDrawTrace(); + drawTrace.Enable(true); + + // Update & Render actor1 + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( drawTrace.CountMethod("DrawArrays"), 1, TEST_LOCATION ); + + // Set task to non-exclusive - actor1 should render twice: + drawTrace.Reset(); + task.SetExclusive(false); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( drawTrace.CountMethod("DrawArrays"), 2, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliRenderTaskSetExclusiveN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetExclusive() on empty handle"); + + RenderTask task; + try + { + task.SetExclusive(true); + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + END_TEST; +} + +int UtcDaliRenderTaskIsExclusive01(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::IsExclusive() Check default values are non-exclusive"); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); @@ -672,6 +889,44 @@ int UtcDaliRenderTaskIsExclusive(void) RenderTask newTask = taskList.CreateTask(); DALI_TEST_CHECK( false == newTask.IsExclusive() ); + + END_TEST; +} + +int UtcDaliRenderTaskIsExclusive02(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::IsExclusive() Check the getter returns set values"); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + + // Not exclusive is the default + RenderTask newTask = taskList.CreateTask(); + DALI_TEST_EQUALS( newTask.IsExclusive(), false, TEST_LOCATION ); + + newTask.SetExclusive(true); + DALI_TEST_EQUALS( newTask.IsExclusive(), true, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliRenderTaskIsExclusiveN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::IsExclusive() on empty handle"); + + RenderTask task; + try + { + bool x = task.IsExclusive(); + x=x; + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } END_TEST; } @@ -705,14 +960,18 @@ int UtcDaliRenderTaskGetInputEnabled(void) // Input is enabled by default RenderTask task = taskList.GetTask( 0u ); - DALI_TEST_CHECK( true == task.GetInputEnabled() ); + DALI_TEST_EQUALS( true, task.GetInputEnabled(), TEST_LOCATION ); RenderTask newTask = taskList.CreateTask(); - DALI_TEST_CHECK( true == newTask.GetInputEnabled() ); + DALI_TEST_EQUALS( true, newTask.GetInputEnabled(), TEST_LOCATION ); + + newTask.SetInputEnabled(false); + DALI_TEST_EQUALS( false, newTask.GetInputEnabled(), TEST_LOCATION ); + END_TEST; } -int UtcDaliRenderTaskSetCameraActor(void) +int UtcDaliRenderTaskSetCameraActorP(void) { TestApplication application; @@ -722,19 +981,42 @@ int UtcDaliRenderTaskSetCameraActor(void) RenderTask task = taskList.GetTask( 0u ); + Actor defaultCameraActor = task.GetCameraActor(); + DALI_TEST_CHECK( defaultCameraActor ); + + CameraActor newCameraActor = CameraActor::New(); + DALI_TEST_CHECK( newCameraActor ); + + task.SetCameraActor( newCameraActor ); + DALI_TEST_CHECK( task.GetCameraActor() != defaultCameraActor ); + DALI_TEST_EQUALS( task.GetCameraActor(), newCameraActor, TEST_LOCATION ); + END_TEST; +} + + +int UtcDaliRenderTaskSetCameraActorN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetCameraActor() with empty actor handle"); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + + RenderTask task = taskList.GetTask( 0u ); + Actor actor = task.GetCameraActor(); DALI_TEST_CHECK( actor ); - CameraActor newActor = CameraActor::New(); - DALI_TEST_CHECK( newActor ); + CameraActor cameraActor; - task.SetCameraActor( newActor ); - DALI_TEST_CHECK( task.GetCameraActor() != actor ); - DALI_TEST_CHECK( task.GetCameraActor() == newActor ); + task.SetCameraActor( cameraActor ); + DALI_TEST_EQUALS( (bool)task.GetCameraActor(), false, TEST_LOCATION ); + DALI_TEST_EQUALS( task.GetCameraActor(), cameraActor, TEST_LOCATION ); END_TEST; } -int UtcDaliRenderTaskGetCameraActor(void) + +int UtcDaliRenderTaskGetCameraActorP(void) { TestApplication application; @@ -744,15 +1026,34 @@ int UtcDaliRenderTaskGetCameraActor(void) RenderTask task = taskList.GetTask( 0u ); - Actor actor = task.GetCameraActor(); + CameraActor actor = task.GetCameraActor(); DALI_TEST_CHECK( actor ); + DALI_TEST_EQUALS( actor.GetProjectionMode(), Dali::Camera::PERSPECTIVE_PROJECTION, TEST_LOCATION ); + DALI_TEST_GREATER( actor.GetFieldOfView(), 0.0f, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliRenderTaskGetCameraActorN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetCameraActor() with empty handle"); + RenderTask task; + + try + { + Actor actor = task.GetCameraActor(); + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } - RenderTask newTask = taskList.CreateTask(); - DALI_TEST_CHECK( actor == newTask.GetCameraActor() ); END_TEST; } -int UtcDaliRenderTaskSetTargetFrameBuffer(void) +int UtcDaliRenderTaskSetTargetFrameBufferP(void) { TestApplication application; @@ -762,18 +1063,43 @@ int UtcDaliRenderTaskSetTargetFrameBuffer(void) RenderTask task = taskList.GetTask( 0u ); - // By default render-tasks do not render off-screen - FrameBufferImage image = task.GetTargetFrameBuffer(); - DALI_TEST_CHECK( !image ); - FrameBufferImage newImage = FrameBufferImage::New(); - task.SetTargetFrameBuffer( newImage ); DALI_TEST_CHECK( task.GetTargetFrameBuffer() == newImage ); END_TEST; } -int UtcDaliRenderTaskGetTargetFrameBuffer(void) +int UtcDaliRenderTaskSetTargetFrameBufferN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetTargetFrameBuffer()"); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + + RenderTask task = taskList.GetTask( 0u ); + FrameBufferImage newImage; // Empty handle + task.SetTargetFrameBuffer( newImage ); + DALI_TEST_EQUALS( (bool)task.GetTargetFrameBuffer(), false, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliRenderTaskGetTargetFrameBufferP(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetTargetFrameBuffer()"); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + + RenderTask newTask = taskList.CreateTask(); + FrameBufferImage fb = FrameBufferImage::New(128, 128, Pixel::RGBA8888); + newTask.SetTargetFrameBuffer( fb ); + DALI_TEST_EQUALS( newTask.GetTargetFrameBuffer(), fb, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliRenderTaskGetTargetFrameBufferN(void) { TestApplication application; @@ -787,12 +1113,10 @@ int UtcDaliRenderTaskGetTargetFrameBuffer(void) FrameBufferImage image = task.GetTargetFrameBuffer(); DALI_TEST_CHECK( !image ); - RenderTask newTask = taskList.CreateTask(); - DALI_TEST_CHECK( !newTask.GetTargetFrameBuffer() ); END_TEST; } -int UtcDaliRenderTaskSetScreenToFrameBufferFunction(void) +int UtcDaliRenderTaskSetScreenToFrameBufferFunctionP(void) { TestApplication application; @@ -821,7 +1145,26 @@ int UtcDaliRenderTaskSetScreenToFrameBufferFunction(void) END_TEST; } -int UtcDaliRenderTaskGetScreenToFrameBufferFunction(void) +int UtcDaliRenderTaskSetScreenToFrameBufferFunctionN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetScreenToFrameBufferFunction()"); + + RenderTask task; // Empty handle + try + { + task.SetScreenToFrameBufferFunction( TestScreenToFrameBufferFunction ); + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + END_TEST; +} + +int UtcDaliRenderTaskGetScreenToFrameBufferFunctionP(void) { TestApplication application; @@ -840,8 +1183,28 @@ int UtcDaliRenderTaskGetScreenToFrameBufferFunction(void) END_TEST; } +int UtcDaliRenderTaskGetScreenToFrameBufferFunctionN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetScreenToFrameBufferFunction() on empty handle"); -int UtcDaliRenderTaskGetScreenToFrameBufferMappingActor(void) + RenderTask task; + try + { + RenderTask::ScreenToFrameBufferFunction func = task.GetScreenToFrameBufferFunction(); + func=func; + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + END_TEST; +} + + +int UtcDaliRenderTaskGetScreenToFrameBufferMappingActorP(void) { TestApplication application; tet_infoline("Testing RenderTask::GetScreenToFrameBufferMappingActor "); @@ -851,28 +1214,109 @@ int UtcDaliRenderTaskGetScreenToFrameBufferMappingActor(void) Actor mappingActor = Actor::New(); renderTask.SetScreenToFrameBufferMappingActor(mappingActor); - DALI_TEST_CHECK( mappingActor == renderTask.GetScreenToFrameBufferMappingActor() ); + DALI_TEST_EQUALS( mappingActor, renderTask.GetScreenToFrameBufferMappingActor(), TEST_LOCATION ); END_TEST; } -int UtcDaliRenderTaskSetViewport(void) + +int UtcDaliRenderTaskGetScreenToFrameBufferMappingActorN(void) { TestApplication application; + tet_infoline("Testing RenderTask::GetScreenToFrameBufferMappingActor with empty task handle"); - tet_infoline("Testing RenderTask::SetViewport()"); + RenderTask task; + try + { + Actor mappingActor; + task.SetScreenToFrameBufferMappingActor(mappingActor); + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + END_TEST; +} + +int UtcDaliRenderTaskGetScreenToFrameBufferMappingActor02N(void) +{ + TestApplication application; + tet_infoline("Testing RenderTask::GetScreenToFrameBufferMappingActor with empty task handle"); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + RenderTask renderTask = taskList.CreateTask(); + Actor actor; + renderTask.SetScreenToFrameBufferMappingActor(actor); - RenderTask task = taskList.GetTask( 0u ); + DALI_TEST_EQUALS( (bool)renderTask.GetScreenToFrameBufferMappingActor(), false, TEST_LOCATION); + END_TEST; +} +int UtcDaliRenderTaskGetViewportP01(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetViewport() on default task"); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + RenderTask task = taskList.GetTask( 0u ); Viewport viewport = task.GetViewport(); // By default the viewport should match the stage width/height + Vector2 stageSize = Stage::GetCurrent().GetSize(); + Viewport expectedViewport( 0, 0, stageSize.width, stageSize.height ); + DALI_TEST_CHECK( viewport == expectedViewport ); + END_TEST; +} +int UtcDaliRenderTaskGetViewportP02(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetViewport() on new task"); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + RenderTask task = taskList.CreateTask(); + Viewport viewport = task.GetViewport(); + + // By default the viewport should match the stage width/height Vector2 stageSize = Stage::GetCurrent().GetSize(); Viewport expectedViewport( 0, 0, stageSize.width, stageSize.height ); DALI_TEST_CHECK( viewport == expectedViewport ); + END_TEST; +} + +int UtcDaliRenderTaskGetViewportN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetViewport() on empty handle"); + + RenderTask task; + try + { + Viewport viewport = task.GetViewport(); + viewport = viewport; + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + END_TEST; +} + +int UtcDaliRenderTaskSetViewportP(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetViewport()"); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + + RenderTask task = taskList.GetTask( 0u ); + Vector2 stageSize = Stage::GetCurrent().GetSize(); Viewport newViewport( 0, 0, stageSize.width * 0.5f, stageSize.height * 0.5f ); task.SetViewport( newViewport ); @@ -884,29 +1328,31 @@ int UtcDaliRenderTaskSetViewport(void) END_TEST; } -int UtcDaliRenderTaskGetViewport(void) +int UtcDaliRenderTaskSetViewportN(void) { TestApplication application; - tet_infoline("Testing RenderTask::GetViewport()"); + tet_infoline("Testing RenderTask::SetViewport()"); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); - RenderTask task = taskList.GetTask( 0u ); - - Viewport viewport = task.GetViewport(); - - // By default the viewport should match the stage width/height - - Vector2 stageSize = Stage::GetCurrent().GetSize(); - Viewport expectedViewport( 0, 0, stageSize.width, stageSize.height ); - DALI_TEST_CHECK( viewport == expectedViewport ); + RenderTask task; + try + { + Vector2 stageSize = Stage::GetCurrent().GetSize(); + Viewport newViewport( 0, 0, stageSize.width * 0.5f, stageSize.height * 0.5f ); + task.SetViewport( newViewport ); + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } - RenderTask newTask = taskList.CreateTask(); - DALI_TEST_CHECK( newTask.GetViewport() == expectedViewport ); END_TEST; } + int UtcDaliRenderTaskSetViewportPosition(void) { TestApplication application; @@ -937,7 +1383,7 @@ int UtcDaliRenderTaskSetViewportPosition(void) // Set by Property test Vector2 newPosition2(32.0f, 32.0f); - task.SetProperty( RenderTask::VIEWPORT_POSITION, newPosition2 ); + task.SetProperty( RenderTask::Property::VIEWPORT_POSITION, newPosition2 ); // Update application.SendNotification(); @@ -947,7 +1393,7 @@ int UtcDaliRenderTaskSetViewportPosition(void) Vector2 newPosition3(64.0f, 0.0f); Animation animation = Animation::New(1.0f); - animation.AnimateTo( Property( task, RenderTask::VIEWPORT_POSITION ), newPosition3, AlphaFunctions::Linear ); + animation.AnimateTo( Property( task, RenderTask::Property::VIEWPORT_POSITION ), newPosition3, AlphaFunction::LINEAR ); animation.Play(); // Perform 1000ms worth of updates at which point animation should have completed. @@ -985,7 +1431,7 @@ int UtcDaliRenderTaskSetViewportSize(void) // Set by Property test Vector2 newSize2(50.0f, 50.0f); - task.SetProperty( RenderTask::VIEWPORT_SIZE, newSize2 ); + task.SetProperty( RenderTask::Property::VIEWPORT_SIZE, newSize2 ); // Update application.SendNotification(); @@ -995,7 +1441,7 @@ int UtcDaliRenderTaskSetViewportSize(void) Vector2 newSize3(10.0f, 10.0f); Animation animation = Animation::New(1.0f); - animation.AnimateTo( Property( task, RenderTask::VIEWPORT_SIZE ), newSize3, AlphaFunctions::Linear ); + animation.AnimateTo( Property( task, RenderTask::Property::VIEWPORT_SIZE ), newSize3, AlphaFunction::LINEAR ); animation.Play(); // Perform 1000ms worth of updates at which point animation should have completed. @@ -1005,80 +1451,228 @@ int UtcDaliRenderTaskSetViewportSize(void) END_TEST; } -int UtcDaliRenderTaskSetClearColor(void) +int UtcDaliRenderTaskSetClearColorP(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetClearColor()"); + + Vector4 testColor( 1.0f, 2.0f, 3.0f, 4.0f ); + Vector4 testColor2( 5.0f, 6.0f, 7.0f, 8.0f ); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + + RenderTask task = taskList.GetTask( 0u ); + DALI_TEST_CHECK( task.GetClearColor() != testColor ); + + task.SetClearColor( testColor ); + + // Wait a frame. + Wait(application); + + DALI_TEST_EQUALS( task.GetClearColor(), testColor, TEST_LOCATION ); + + task.SetProperty( RenderTask::Property::CLEAR_COLOR, testColor2 ); + + // Wait a frame. + Wait(application); + + DALI_TEST_EQUALS( task.GetClearColor(), testColor2, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliRenderTaskSetClearColorN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetClearColor() on empty handle"); + + RenderTask task; + try + { + task.SetClearColor( Vector4::ZERO ); + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + END_TEST; +} + +int UtcDaliRenderTaskGetClearColorP(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetClearColor()"); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + RenderTask task = taskList.GetTask( 0u ); + DALI_TEST_EQUALS( task.GetClearColor(), RenderTask::DEFAULT_CLEAR_COLOR, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliRenderTaskGetClearColorN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::GetClearColor()"); + + RenderTask task; + try + { + Vector4 color = task.GetClearColor(); + color = color; + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + END_TEST; +} + +int UtcDaliRenderTaskSetClearEnabledP(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetClearEnabled()"); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + + RenderTask task = taskList.GetTask( 0u ); + DALI_TEST_CHECK( !task.GetClearEnabled() ); // defaults to false + + task.SetClearEnabled( true ); + DALI_TEST_EQUALS( task.GetClearEnabled(), true, TEST_LOCATION ); + + task.SetClearEnabled( false ); + DALI_TEST_EQUALS( task.GetClearEnabled(), false, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliRenderTaskSetClearEnabledN(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SetClearEnabled() with empty handle"); + + RenderTask task; + try + { + task.SetClearEnabled(true); + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + END_TEST; +} + +int UtcDaliRenderTaskGetClearEnabledP(void) { TestApplication application; - tet_infoline("Testing RenderTask::SetClearColor()"); - - Vector4 testColor( 1.0f, 2.0f, 3.0f, 4.0f ); - Vector4 testColor2( 5.0f, 6.0f, 7.0f, 8.0f ); + tet_infoline("Testing RenderTask::GetClearEnabled()"); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); RenderTask task = taskList.GetTask( 0u ); - DALI_TEST_CHECK( task.GetClearColor() != testColor ); - - task.SetClearColor( testColor ); - - // Wait a frame. - Wait(application); + DALI_TEST_CHECK( !task.GetClearEnabled() ); // defaults to false + END_TEST; +} - DALI_TEST_EQUALS( task.GetClearColor(), testColor, TEST_LOCATION ); - task.SetProperty( RenderTask::CLEAR_COLOR, testColor2 ); +int UtcDaliRenderTaskGetClearEnabledN(void) +{ + TestApplication application; - // Wait a frame. - Wait(application); + tet_infoline("Testing RenderTask::GetClearEnabled() with empty handle"); - DALI_TEST_EQUALS( task.GetClearColor(), testColor2, TEST_LOCATION ); + RenderTask task; + try + { + bool x = task.GetClearEnabled(); + x=x; + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } END_TEST; } -int UtcDaliRenderTaskGetClearColor(void) +int UtcDaliRenderTaskSetCullModeP(void) { TestApplication application; - tet_infoline("Testing RenderTask::GetClearColor()"); + tet_infoline("Testing RenderTask::SetCullMode()"); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); RenderTask task = taskList.GetTask( 0u ); - DALI_TEST_EQUALS( task.GetClearColor(), RenderTask::DEFAULT_CLEAR_COLOR, TEST_LOCATION ); + DALI_TEST_EQUALS( task.GetCullMode(), true, TEST_LOCATION ); + + task.SetCullMode( false ); + + DALI_TEST_EQUALS( task.GetCullMode(), false, TEST_LOCATION ); + END_TEST; } -int UtcDaliRenderTaskSetClearEnabled(void) +int UtcDaliRenderTaskSetCullModeN(void) { TestApplication application; - tet_infoline("Testing RenderTask::SetClearEnabled()"); + tet_infoline("Testing RenderTask::SetCullMode() on empty handle"); - RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + RenderTask task; + try + { + task.SetCullMode( false ); + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } + END_TEST; +} - RenderTask task = taskList.GetTask( 0u ); - DALI_TEST_CHECK( !task.GetClearEnabled() ); // defaults to false +int UtcDaliRenderTaskGetCullModeP(void) +{ + TestApplication application; - task.SetClearEnabled( true ); - DALI_TEST_EQUALS( task.GetClearEnabled(), true, TEST_LOCATION ); + tet_infoline("Testing RenderTask::GetCullMode()"); - task.SetClearEnabled( false ); - DALI_TEST_EQUALS( task.GetClearEnabled(), false, TEST_LOCATION ); + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + RenderTask task = taskList.GetTask( 0u ); + DALI_TEST_EQUALS( task.GetCullMode(), true, TEST_LOCATION ); END_TEST; } -int UtcDaliRenderTaskGetClearEnabled(void) +int UtcDaliRenderTaskGetCullModeN(void) { TestApplication application; - tet_infoline("Testing RenderTask::GetClearEnabled()"); - - RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + tet_infoline("Testing RenderTask::GetCullMode() with empty handle"); - RenderTask task = taskList.GetTask( 0u ); - DALI_TEST_CHECK( !task.GetClearEnabled() ); // defaults to false + RenderTask task; + try + { + bool x = task.GetCullMode(); + x=x; + } + catch (Dali::DaliException(e)) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT(e, "RenderTask handle is empty", TEST_LOCATION); + } END_TEST; } + int UtcDaliRenderTaskSetRefreshRate(void) { TestApplication application; @@ -1129,13 +1723,13 @@ int UtcDaliRenderTaskSignalFinished(void) Stage::GetCurrent().Add( offscreenCameraActor ); - BitmapImage image = BitmapImage::New( 10, 10 ); + BufferImage image = BufferImage::New( 10, 10 ); ImageActor rootActor = ImageActor::New( image ); rootActor.SetSize( 10, 10 ); Stage::GetCurrent().Add( rootActor ); RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); - NativeImagePtr testNativeImagePtr = new TestNativeImage(10, 10); + NativeImageInterfacePtr testNativeImagePtr = TestNativeImage::New(10, 10); FrameBufferImage frameBufferImage = FrameBufferImage::New( *testNativeImagePtr.Get() ); // Flush all outstanding messages @@ -1216,7 +1810,7 @@ int UtcDaliRenderTaskContinuous01(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1228,22 +1822,16 @@ int UtcDaliRenderTaskContinuous01(void) CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete application.SendNotification(); - // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + // START PROCESS/RENDER Input, Expected Input, Expected, KeepUpdating + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, false ) ); application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - // ADD SOURCE ACTOR TO STAGE - expect continuous renders to start, no finished signal Stage::GetCurrent().Add(secondRootActor); application.SendNotification(); // CONTINUE PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); END_TEST; } @@ -1265,7 +1853,7 @@ int UtcDaliRenderTaskContinuous02(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1279,21 +1867,16 @@ int UtcDaliRenderTaskContinuous02(void) CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete application.SendNotification(); - // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + // START PROCESS/RENDER Input, Expected Input, Expected, KeepUpdating + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, false ) ); application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); // MAKE SOURCE ACTOR VISIBLE - expect continuous renders to start, no finished signal secondRootActor.SetVisible(true); application.SendNotification(); // CONTINUE PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); END_TEST; } @@ -1312,7 +1895,7 @@ int UtcDaliRenderTaskContinuous03(void) Stage::GetCurrent().Add( rootActor ); CameraActor offscreenCameraActor = CameraActor::New(); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1326,20 +1909,15 @@ int UtcDaliRenderTaskContinuous03(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, false ) ); application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); // ADD CAMERA ACTOR TO STAGE - expect continuous renders to start, no finished signal Stage::GetCurrent().Add( offscreenCameraActor ); application.SendNotification(); // CONTINUE PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); END_TEST; } @@ -1360,7 +1938,7 @@ int UtcDaliRenderTaskContinuous04(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1373,121 +1951,12 @@ int UtcDaliRenderTaskContinuous04(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - - // FINISH RESOURCE LOADING - expect continuous renders to start, no finished signal - CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - application.GetPlatform().ClearReadyResources(); - - // CONTINUE PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - END_TEST; -} - -int UtcDaliRenderTaskContinuous05(void) -{ - TestApplication application; - - tet_infoline("Testing RenderTask Render Continuous, every 3 frames using loading image\nPRE: Resources not ready\nPOST:continuous renders, no Finished signal"); - - // SETUP AN OFFSCREEN RENDER TASK - application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace(); - drawTrace.Enable(true); - - Actor rootActor = Actor::New(); - Stage::GetCurrent().Add( rootActor ); - - CameraActor offscreenCameraActor = CameraActor::New(); - Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); - Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); - Integration::ResourceId imageRequestId = imageRequest->GetId(); - Integration::ResourceTypeId imageType = imageRequest->GetType()->id; - Stage::GetCurrent().Add(secondRootActor); - - RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, 3, true); - bool finished = false; - RenderTaskFinished renderTaskFinished( finished ); - newTask.FinishedSignal().Connect( &application, renderTaskFinished ); - application.SendNotification(); - - // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - - // FINISH RESOURCE LOADING - expect continuous renders to start, no finished signal - CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - END_TEST; -} - -int UtcDaliRenderTaskContinuous06(void) -{ - TestApplication application; - - tet_infoline("Testing RenderTask Render Continuous, every 3 frames using loading image\nPRE: Render Always, Resources not ready\nPOST:continuous renders at reduced freq, no Finished signal"); - - // SETUP AN OFFSCREEN RENDER TASK - application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); - TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace(); - drawTrace.Enable(true); - - Actor rootActor = Actor::New(); - Stage::GetCurrent().Add( rootActor ); - - CameraActor offscreenCameraActor = CameraActor::New(); - Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); - Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); - Integration::ResourceId imageRequestId = imageRequest->GetId(); - Integration::ResourceTypeId imageType = imageRequest->GetType()->id; - Stage::GetCurrent().Add(secondRootActor); - - RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true); - bool finished = false; - RenderTaskFinished renderTaskFinished( finished ); - newTask.FinishedSignal().Connect( &application, renderTaskFinished ); - application.SendNotification(); - - // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); - // FINISH RESOURCE LOADING - expect continuous renders to start, no finished signal + // FINISH RESOURCE LOADING - expect 'continuous' renders to start, no finished signal CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - - // CHANGE FREQUENCY - newTask.SetRefreshRate(3); // Input, Expected Input, Expected - application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - - newTask.SetRefreshRate(RenderTask::REFRESH_ALWAYS); // Should render every frame immediately - application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); END_TEST; } @@ -1509,13 +1978,12 @@ int UtcDaliRenderTaskOnce01(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; Stage::GetCurrent().Add(secondRootActor); - secondRootActor.SetVisible(false); RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, true); bool finished = false; @@ -1524,34 +1992,26 @@ int UtcDaliRenderTaskOnce01(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // MAKE SOURCE VISIBLE secondRootActor.SetVisible(true); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // FINISH RESOURCE LOADING - expect no rendering yet CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); application.GetPlatform().ClearReadyResources(); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - - // Finished rendering - expect no more renders, no more signals: - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); END_TEST; } @@ -1574,7 +2034,7 @@ int UtcDaliRenderTaskOnce02(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1587,35 +2047,28 @@ int UtcDaliRenderTaskOnce02(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // FINISH RESOURCE LOADING CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); // Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); - // Finished rendering - expect no more renders, no more signals: - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); END_TEST; } @@ -1640,7 +2093,7 @@ int UtcDaliRenderTaskOnce03(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1653,33 +2106,35 @@ int UtcDaliRenderTaskOnce03(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // CHANGE TO RENDER ONCE newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); // Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // FINISH RESOURCE LOADING CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); application.GetPlatform().ClearReadyResources(); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - // Finished rendering - expect no more renders, no more signals: - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + // Expect: No draw - we've just drawn our render task once, above. No finished signal - + // we won't read the gl sync until the next frame. Continue rendering - we're waiting for + // the sync + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + + // Expect: 1 final draw - this Update doesn't update the scene, hence render instructions + // from last frame but 1 are still present. + // Finished signal should be true - we've just done the sync. + // Should now stop rendering and updating - nothing left to do. + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, true, false ) ); + END_TEST; } @@ -1704,7 +2159,7 @@ int UtcDaliRenderTaskOnce03(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1721,8 +2176,8 @@ int UtcDaliRenderTaskOnce03(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); // CHANGE TO RENDER ONCE, RESOURCES BECOME NOT READY newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); @@ -1731,29 +2186,29 @@ int UtcDaliRenderTaskOnce03(void) ReloadImage(application, secondRootActor.GetImage()); application.SendNotification(); // Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); DALI_TEST_EQUALS( secondRootActor.GetImage().GetLoadingState(), Dali::ResourceLoading, TEST_LOCATION); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // FINISH RESOURCE LOADING CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); application.GetPlatform().ClearReadyResources(); Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, true ) ); // Finished rendering - expect no more renders, no more signals: - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); END_TEST; } #endif @@ -1778,7 +2233,7 @@ int UtcDaliRenderTaskOnce05(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1795,39 +2250,31 @@ int UtcDaliRenderTaskOnce05(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); // CHANGE TO RENDER ONCE, newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); END_TEST; } @@ -1853,7 +2300,7 @@ int UtcDaliRenderTaskOnce06(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1873,25 +2320,23 @@ int UtcDaliRenderTaskOnce06(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj == NULL ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - // CHANGE TO RENDER ONCE, newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); application.SendNotification(); // Expect SetRefreshRate to have been called again @@ -1899,18 +2344,13 @@ int UtcDaliRenderTaskOnce06(void) RenderTaskFinished renderTaskFinished( finished ); connectionTracker.DisconnectAll(); newTask.FinishedSignal().Connect( &connectionTracker, renderTaskFinished ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); END_TEST; } @@ -1935,7 +2375,7 @@ int UtcDaliRenderTaskOnce07(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -1952,32 +2392,27 @@ int UtcDaliRenderTaskOnce07(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); // CHANGE TO RENDER ONCE, newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); END_TEST; } @@ -2003,7 +2438,7 @@ int UtcDaliRenderTaskOnce08(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Stage::GetCurrent().Add(secondRootActor); @@ -2015,31 +2450,33 @@ int UtcDaliRenderTaskOnce08(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // CHANGE TO RENDER ONCE, newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + + tet_printf(" FailImageLoad\n"); FailImageLoad(application, imageRequestId); // Need to run Update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); // nothing to draw + + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // nothing to draw + application.SendNotification(); + + // Drawing empty framebuffer, so will still get a GL sync Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject(); DALI_TEST_CHECK( lastSyncObj != NULL ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); sync.SetObjectSynced( lastSyncObj, true ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + // Expect finished signal, as all resources are complete + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); + END_TEST; } @@ -2061,13 +2498,12 @@ int UtcDaliRenderTaskOnceNoSync01(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; Stage::GetCurrent().Add(secondRootActor); - secondRootActor.SetVisible(false); RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ONCE, false); bool finished = false; @@ -2076,23 +2512,14 @@ int UtcDaliRenderTaskOnceNoSync01(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - - // MAKE SOURCE VISIBLE - secondRootActor.SetVisible(true); - application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // FINISH RESOURCE LOADING - expect immediate rendering yet CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); END_TEST; } @@ -2114,7 +2541,7 @@ int UtcDaliRenderTaskOnceNoSync02(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -2127,23 +2554,18 @@ int UtcDaliRenderTaskOnceNoSync02(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // FINISH RESOURCE LOADING CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); // Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); END_TEST; } @@ -2167,7 +2589,7 @@ int UtcDaliRenderTaskOnceNoSync03(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -2180,23 +2602,20 @@ int UtcDaliRenderTaskOnceNoSync03(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // CHANGE TO RENDER ONCE newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); // Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // FINISH RESOURCE LOADING CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); END_TEST; } @@ -2220,7 +2639,7 @@ int UtcDaliRenderTaskOnceNoSync03(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -2237,8 +2656,8 @@ int UtcDaliRenderTaskOnceNoSync03(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); // CHANGE TO RENDER ONCE, RESOURCES BECOME NOT READY newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); @@ -2247,18 +2666,18 @@ int UtcDaliRenderTaskOnceNoSync03(void) ReloadImage(application, secondRootActor.GetImage()); application.SendNotification(); // Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); DALI_TEST_EQUALS( secondRootActor.GetImage().GetLoadingState(), Dali::ResourceLoading, TEST_LOCATION); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // FINISH RESOURCE LOADING CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, true, true ) ); application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); END_TEST; } #endif @@ -2282,7 +2701,7 @@ int UtcDaliRenderTaskOnceNoSync05(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -2299,25 +2718,18 @@ int UtcDaliRenderTaskOnceNoSync05(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); // CHANGE TO RENDER ONCE, newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); END_TEST; } @@ -2342,7 +2754,7 @@ int UtcDaliRenderTaskOnceNoSync06(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -2362,14 +2774,13 @@ int UtcDaliRenderTaskOnceNoSync06(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); // CHANGE TO RENDER ONCE, newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); // Expect SetRefreshRate to have been called again // Prevent next finished signal calling refresh once again @@ -2377,11 +2788,8 @@ int UtcDaliRenderTaskOnceNoSync06(void) connectionTracker.DisconnectAll(); newTask.FinishedSignal().Connect( &connectionTracker, renderTaskFinished ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); END_TEST; } @@ -2405,7 +2813,7 @@ int UtcDaliRenderTaskOnceNoSync07(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -2422,23 +2830,18 @@ int UtcDaliRenderTaskOnceNoSync07(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) ); // CHANGE TO RENDER ONCE, newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); END_TEST; } @@ -2461,7 +2864,7 @@ int UtcDaliRenderTaskOnceNoSync08(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor secondRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Stage::GetCurrent().Add(secondRootActor); @@ -2473,24 +2876,20 @@ int UtcDaliRenderTaskOnceNoSync08(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // CHANGE TO RENDER ONCE, newTask.SetRefreshRate(RenderTask::REFRESH_ONCE); application.SendNotification(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); FailImageLoad(application, imageRequestId); // Need to run Update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); // nothing to draw - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, true ) ); // nothing to draw + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) ); + END_TEST; } @@ -2515,7 +2914,7 @@ int UtcDaliRenderTaskOnceChain01(void) CameraActor offscreenCameraActor = CameraActor::New(); Stage::GetCurrent().Add( offscreenCameraActor ); - ImageActor firstRootActor = CreateLoadingImage(application, "aFile.jpg", Image::Immediate, Image::Unused); + ImageActor firstRootActor = CreateLoadingImage(application, "aFile.jpg", ResourceImage::IMMEDIATE, Image::UNUSED); Integration::ResourceRequest* imageRequest = application.GetPlatform().GetRequest(); Integration::ResourceId imageRequestId = imageRequest->GetId(); Integration::ResourceTypeId imageType = imageRequest->GetType()->id; @@ -2539,29 +2938,19 @@ int UtcDaliRenderTaskOnceChain01(void) application.SendNotification(); // START PROCESS/RENDER Input, Expected Input, Expected - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, false, true ) ); DALI_TEST_CHECK( secondFinished == false ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, false, true ) ); DALI_TEST_CHECK( secondFinished == false ); CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete - DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, false ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, firstFinished, false, true ) ); DALI_TEST_CHECK( secondFinished == false ); application.GetPlatform().ClearReadyResources(); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, firstFinished, true ) ); + DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, firstFinished, true, false ) ); DALI_TEST_CHECK( secondFinished == true ); - secondFinished = false; - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, firstFinished, false ) ); - DALI_TEST_CHECK( secondFinished == false ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, firstFinished, false ) ); - DALI_TEST_CHECK( secondFinished == false ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, firstFinished, false ) ); - DALI_TEST_CHECK( secondFinished == false ); - DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, firstFinished, false ) ); - DALI_TEST_CHECK( secondFinished == false ); - END_TEST; } @@ -2577,3 +2966,159 @@ int UtcDaliRenderTaskProperties(void) DALI_TEST_EQUALS( indices.size(), task.GetPropertyCount(), TEST_LOCATION ); END_TEST; } + +int UtcDaliRenderTaskSetScreenToFrameBufferMappingActor(void) +{ + TestApplication application; + tet_infoline("Testing RenderTask::SetScreenToFrameBufferMappingActor "); + + Stage stage = Stage::GetCurrent(); + Size stageSize = stage.GetSize(); + Actor mappingActor = Actor::New(); + Vector2 scale( 0.6f, 0.75f); + Vector2 offset( stageSize.x*0.1f, stageSize.y*0.15f); + mappingActor.SetSize( stageSize * scale ); + mappingActor.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + mappingActor.SetPosition( offset.x, offset.y ); + stage.Add( mappingActor ); + + Actor offscreenActor = Actor::New(); + offscreenActor.SetSize( stageSize ); + offscreenActor.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + stage.Add( offscreenActor ); + + RenderTaskList taskList = stage.GetRenderTaskList(); + RenderTask renderTask = taskList.CreateTask(); + FrameBufferImage frameBufferImage = FrameBufferImage::New(stageSize.width*scale.x, stageSize.height*scale.y, Pixel::A8, Image::NEVER); + renderTask.SetSourceActor( offscreenActor ); + renderTask.SetExclusive( true ); + renderTask.SetInputEnabled( true ); + renderTask.SetTargetFrameBuffer( frameBufferImage ); + renderTask.SetRefreshRate( RenderTask::REFRESH_ONCE ); + renderTask.SetScreenToFrameBufferMappingActor( mappingActor ); + application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); + + // Render and notify + application.SendNotification(); + application.Render(); + application.Render(); + application.SendNotification(); + + Vector2 screenCoordinates( stageSize.x * 0.05f, stageSize.y * 0.05f ); + Dali::HitTestAlgorithm::Results results; + DALI_TEST_CHECK( !results.actor ); + DALI_TEST_EQUALS( Vector2::ZERO, results.actorCoordinates, 0.1f, TEST_LOCATION ); + // miss expected, results not changed + DALI_TEST_CHECK( false == Dali::HitTestAlgorithm::HitTest( renderTask, screenCoordinates, results, IsActorHittableFunction ) ); + DALI_TEST_CHECK( !results.actor ); + DALI_TEST_EQUALS( Vector2::ZERO, results.actorCoordinates, 0.1f, TEST_LOCATION ); + + screenCoordinates.x = stageSize.x * 0.265f; + screenCoordinates.y = stageSize.y * 0.33f; + results.actor = Actor(); + results.actorCoordinates = Vector2::ZERO; + // hit expected, results changed + DALI_TEST_CHECK( true == Dali::HitTestAlgorithm::HitTest( renderTask, screenCoordinates, results, IsActorHittableFunction ) ); + DALI_TEST_CHECK( results.actor == offscreenActor ); + DALI_TEST_EQUALS( (screenCoordinates-offset)/scale , results.actorCoordinates, 0.1f, TEST_LOCATION ); + + screenCoordinates.x = stageSize.x * 0.435f; + screenCoordinates.y = stageSize.y * 0.52f; + // hit expected, results changed + DALI_TEST_CHECK( true == Dali::HitTestAlgorithm::HitTest( renderTask, screenCoordinates, results, IsActorHittableFunction ) ); + DALI_TEST_CHECK( results.actor == offscreenActor ); + const Vector2 expectedCoordinates = (screenCoordinates-offset)/scale; + DALI_TEST_EQUALS( expectedCoordinates , results.actorCoordinates, 0.1f, TEST_LOCATION ); + + screenCoordinates.x = stageSize.x * 0.65f; + screenCoordinates.y = stageSize.y * 0.95f; + // miss expected, results not changed + DALI_TEST_CHECK( false == Dali::HitTestAlgorithm::HitTest( renderTask, screenCoordinates, results, IsActorHittableFunction ) ); + DALI_TEST_CHECK( results.actor == offscreenActor ); + DALI_TEST_EQUALS( expectedCoordinates , results.actorCoordinates, 0.1f, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliRenderTaskFinishInvisibleSourceActor(void) +{ + TestApplication application; + + tet_infoline("Testing RenderTask::SignalFinished()"); + + application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); + TestGlSyncAbstraction& sync = application.GetGlSyncAbstraction(); + + CameraActor offscreenCameraActor = CameraActor::New(); + + Stage::GetCurrent().Add( offscreenCameraActor ); + + BufferImage image = BufferImage::New( 10, 10 ); + ImageActor rootActor = ImageActor::New( image ); + rootActor.SetSize( 10, 10 ); + rootActor.SetVisible(false); + Stage::GetCurrent().Add( rootActor ); + + RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList(); + NativeImageInterfacePtr testNativeImagePtr = TestNativeImage::New(10, 10); + FrameBufferImage frameBufferImage = FrameBufferImage::New( *testNativeImagePtr.Get() ); + + // Flush all outstanding messages + application.SendNotification(); + application.Render(); + + RenderTask newTask = taskList.CreateTask(); + newTask.SetCameraActor( offscreenCameraActor ); + newTask.SetSourceActor( rootActor ); + newTask.SetInputEnabled( false ); + newTask.SetClearColor( Vector4( 0.f, 0.f, 0.f, 0.f ) ); + newTask.SetClearEnabled( true ); + newTask.SetExclusive( true ); + newTask.SetRefreshRate( RenderTask::REFRESH_ONCE ); + newTask.SetTargetFrameBuffer( frameBufferImage ); + + // Framebuffer doesn't actually get created until Connected, i.e. by previous line + + bool finished = false; + RenderTaskFinished renderTaskFinished( finished ); + newTask.FinishedSignal().Connect( &application, renderTaskFinished ); + + // Flush the queue and render. + application.SendNotification(); + + // 1 render to process render task, then wait for sync before finished msg is sent + // from update to the event thread. + + application.Render(); + application.SendNotification(); + DALI_TEST_CHECK( !finished ); + + Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject(); + DALI_TEST_CHECK( lastSyncObj != NULL ); + + application.Render(); + DALI_TEST_EQUALS( (application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION ); + application.SendNotification(); + DALI_TEST_CHECK( !finished ); + + application.Render(); + DALI_TEST_EQUALS( (application.GetUpdateStatus() & Integration::KeepUpdating::RENDER_TASK_SYNC), Integration::KeepUpdating::RENDER_TASK_SYNC, TEST_LOCATION ); + application.SendNotification(); + DALI_TEST_CHECK( ! finished ); + + sync.SetObjectSynced( lastSyncObj, true ); + + application.Render(); + application.SendNotification(); + DALI_TEST_CHECK( !finished ); + + application.Render(); + application.SendNotification(); + DALI_TEST_CHECK( finished ); + finished = false; + + application.Render(); // Double check no more finished signal + application.SendNotification(); + DALI_TEST_CHECK( ! finished ); + + END_TEST; +}