application.SendNotification();
application.Render(0);
}
+ {
+ tet_printf("Check whether clear and render-well case don't send signal\n");
+ // Play the animation, and clear when animation finished naturally, and play again.
+ animation.Play();
+
+ application.SendNotification();
+ application.Render(static_cast<uint32_t>(durationSeconds * 500.0f));
+ finishCheck.CheckSignalNotReceived();
+ finishCheck.Reset();
+
+ application.SendNotification();
+ finishCheck.CheckSignalNotReceived();
+ finishCheck.Reset();
+
+ // Call Clear now.
+ animation.Clear();
+
+ // Finish animation naturally. (Note that dali don't call finished callback even if one render frame spend more than duration.)
+ application.Render(static_cast<uint32_t>(durationSeconds * 500.0f) + 10u);
+ application.SendNotification();
+
+ // expect finished signal not be recieved due to Animation cleared.
+ finishCheck.CheckSignalNotReceived();
+ finishCheck.Reset();
+
+ application.SendNotification();
+ finishCheck.CheckSignalNotReceived();
+ finishCheck.Reset();
+
+ // Play again
+ animation.Play();
+ application.SendNotification();
+ application.Render(static_cast<uint32_t>(durationSeconds * 500.0f));
+ finishCheck.CheckSignalNotReceived();
+ finishCheck.Reset();
+
+ application.Render(static_cast<uint32_t>(durationSeconds * 500.0f) + 10u);
+ application.SendNotification();
+
+ // expect finished signal recieved due to Animation finished.
+ application.SendNotification();
+ finishCheck.CheckSignalReceived();
+ finishCheck.Reset();
+
+ application.SendNotification();
+ application.Render(0);
+ }
END_TEST;
}
// Copy the Scene container locally to avoid possibly invalid iterator
SceneContainer scenes = mScenes;
+ DALI_LOG_DEBUG_INFO("ForceRelayout()\n");
RelayoutAndFlush(scenes);
+ DALI_LOG_DEBUG_INFO("ForceRelayout() done\n");
}
void Core::ProcessEvents()
// Signal that any messages received will be flushed soon
mUpdateManager->EventProcessingStarted();
+
+ mNotificationManager->ProcessMessages();
}
mRelayoutFlush = true;
if(!isProcessEvents)
{
+ // Notify to animation play list that event processing has finished.
+ mAnimationPlaylist->EventLoopFinished();
+
// Revert fake informations
mProcessingEvent = false;
mRelayoutController->SetProcessingCoreEvents(false);
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 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.
if(playedCount > mNotificationCount)
{
- // Note that only one signal is emitted, if the animation has been played repeatedly
- mNotificationCount = playedCount;
-
switch(mState)
{
case Internal::Animation::InternalState::PLAYING:
break;
}
}
+
+ if(hasFinished)
+ {
+ // Note that only one signal is emitted, if the animation has been played repeatedly
+ mNotificationCount = playedCount;
+ }
}
return hasFinished;