-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.0 (the License);
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://floralicense.org/license/
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an AS IS BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
#include <iostream>
#include <stdlib.h>
-#include <dali/dali.h>
+#include <dali/public-api/dali-core.h>
#include <dali-test-suite-utils.h>
#include <dali/integration-api/debug.h>
+#include <test-native-image.h>
+
+#define BOOLSTR(x) ((x)?"T":"F")
+
using namespace Dali;
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)
/*
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);
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);
application.GetPlatform().SetResourceLoadFailed(resourceId, Integration::FailureUnknown);
}
-void ReloadImage(TestApplication& application, Image image)
+void ReloadImage(TestApplication& application, ResourceImage image)
{
application.GetPlatform().ClearReadyResources();
application.GetPlatform().DiscardRequest();
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
{
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();
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 result;
+}
- return (sigPassed && drawPassed);
+// 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
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 );
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 );
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 );
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 );
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);
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);
// 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();
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, AlphaFunctions::Linear );
animation.Play();
// Perform 1000ms worth of updates at which point animation should have completed.
// 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();
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, AlphaFunctions::Linear );
animation.Play();
// Perform 1000ms worth of updates at which point animation should have completed.
DALI_TEST_EQUALS( task.GetClearColor(), testColor, TEST_LOCATION );
- task.SetProperty( RenderTask::CLEAR_COLOR, testColor2 );
+ task.SetProperty( RenderTask::Property::CLEAR_COLOR, testColor2 );
// Wait a frame.
Wait(application);
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
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;
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 ) );
- 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, true ) );
+ application.GetPlatform().ClearReadyResources();
+
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, 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, true ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) );
END_TEST;
}
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;
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 ) );
+ application.GetPlatform().ClearReadyResources();
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, 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, true ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) );
END_TEST;
}
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;
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 ) );
+ application.GetPlatform().ClearReadyResources();
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, false, 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, true ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) );
END_TEST;
}
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;
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 ) );
-
- // 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 ) );
- 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 ) );
-
- // 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 ) );
- 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;
}
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;
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;
}
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;
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 ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) );
+ application.GetPlatform().ClearReadyResources();
+ 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;
}
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;
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 ) );
+ 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;
}
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;
application.Render();
Stage::GetCurrent().Add(secondRootActor);
+ application.GetPlatform().ClearReadyResources();
RenderTask newTask = CreateRenderTask(application, offscreenCameraActor, rootActor, secondRootActor, RenderTask::REFRESH_ALWAYS, true);
bool finished = false;
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);
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
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;
CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.Render();
+ application.GetPlatform().ClearReadyResources();
Stage::GetCurrent().Add(secondRootActor);
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,
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;
}
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;
CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.Render();
+ application.GetPlatform().ClearReadyResources();
Stage::GetCurrent().Add(secondRootActor);
application.SendNotification();
+ // Expect 2 frames to be drawn.
// 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, true ) );
Integration::GlSyncAbstraction::SyncObject* lastSyncObj = sync.GetLastSyncObject();
DALI_TEST_CHECK( lastSyncObj == NULL );
-
- 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 ) );
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
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;
}
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;
CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.Render();
+ application.GetPlatform().ClearReadyResources();
Stage::GetCurrent().Add(secondRootActor);
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,
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;
}
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);
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 ) );
+ // Expect finished signal, as all resources are complete
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, 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;
}
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;
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, 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 ) );
+ application.GetPlatform().ClearReadyResources();
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) );
END_TEST;
}
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;
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 ) );
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, true, finished, false, false ) );
+ application.GetPlatform().ClearReadyResources();
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;
}
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;
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, 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 ) );
+ application.GetPlatform().ClearReadyResources();
+ DALI_TEST_CHECK( UpdateRender(application, drawTrace, false, finished, true, false ) );
END_TEST;
}
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;
CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.Render();
+ application.GetPlatform().ClearReadyResources();
Stage::GetCurrent().Add(secondRootActor);
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);
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, 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, true, true ) );
+ application.GetPlatform().ClearReadyResources();
+ 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
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;
CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.Render();
+ application.GetPlatform().ClearReadyResources();
Stage::GetCurrent().Add(secondRootActor);
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,
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;
}
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;
CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.Render();
+ application.GetPlatform().ClearReadyResources();
Stage::GetCurrent().Add(secondRootActor);
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,
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
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;
}
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;
CompleteImageLoad(application, imageRequestId, imageType); // Need to run update again for this to complete
application.Render();
+ application.GetPlatform().ClearReadyResources();
Stage::GetCurrent().Add(secondRootActor);
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,
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;
}
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);
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;
}
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;
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;
}
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;
+}