From: Agnelo Vaz Date: Thu, 30 Mar 2017 12:26:00 +0000 (+0100) Subject: Reset Autoscrolling on TextLabel relayout X-Git-Tag: dali_1.2.34~9 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=0122cb722a92a3368f1ed5e995945332f64ca05b Reset Autoscrolling on TextLabel relayout Change-Id: I4756d4b82a9354460a7f7458b2a58b0f11b1f20e --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp index 9e00636..5cd0063 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp @@ -553,6 +553,59 @@ int UtcDaliToolkitTextlabelScrollingP(void) END_TEST; } +int UtcDaliToolkitTextlabelScrollingInterruptedP(void) +{ + ToolkitTestApplication application; + tet_infoline(" UtcDaliToolkitTextlabelScrollingInterruptedP"); + TextLabel label = TextLabel::New("Some text to scroll"); + DALI_TEST_CHECK( label ); + // Avoid a crash when core load gl resources. + application.GetGlAbstraction().SetCheckFramebufferStatusResult( GL_FRAMEBUFFER_COMPLETE ); + Stage::GetCurrent().Add( label ); + label.SetSize( 360.0f, 20.f ); + // Turn on all the effects + label.SetProperty( TextLabel::Property::MULTI_LINE, false ); + label.SetProperty( TextLabel::Property::AUTO_SCROLL_GAP, 50.0f ); + label.SetProperty( TextLabel::Property::AUTO_SCROLL_LOOP_COUNT, 3 ); + label.SetProperty( TextLabel::Property::AUTO_SCROLL_SPEED, 80.0f ); + + // Render the text. + application.SendNotification(); + application.Render(); + + unsigned int actorCount1 = label.GetChildCount(); + tet_printf("Initial actor count is(%d)\n", actorCount1 ); + + try + { + // Render some text with the shared atlas backend + label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true ); + application.SendNotification(); + application.Render(2000); + + unsigned int actorCount1 = label.GetChildCount(); + tet_printf("Actor count after scrolling is(%d)\n", actorCount1 ); + + label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::RED ); + + // Render the text. + application.SendNotification(); + application.Render(); + + unsigned int actorCount2 = label.GetChildCount(); + tet_printf("After changing color the actor count is(%d)\n", actorCount2 ); + + DALI_TEST_EQUALS( actorCount1, actorCount2, TEST_LOCATION ); + + } + catch( ... ) + { + tet_result(TET_FAIL); + } + + END_TEST; +} + int UtcDaliToolkitTextlabelScrollingN(void) { ToolkitTestApplication application; diff --git a/dali-toolkit/internal/text/text-scroller.cpp b/dali-toolkit/internal/text/text-scroller.cpp index d2f9348..172cc2f 100644 --- a/dali-toolkit/internal/text/text-scroller.cpp +++ b/dali-toolkit/internal/text/text-scroller.cpp @@ -268,6 +268,13 @@ void TextScroller::SetParameters( Actor sourceActor, const Size& controlSize, co DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextScroller::SetParameters controlSize[%f,%f] offscreenSize[%f,%f] direction[%d] alignmentOffset[%f]\n", controlSize.x, controlSize.y, offScreenSize.x, offScreenSize.y, direction, alignmentOffset ); + CleanUp(); // If already scrolling then restart with new parameters + + if ( mScrollAnimation ) + { + mScrollAnimation.Clear(); + } + FrameBufferImage offscreenRenderTargetForText = FrameBufferImage::New( offScreenSize.width, offScreenSize.height, Pixel::RGBA8888 ); Renderer renderer;