From 5338e5b35bf2cbd6ca79dc04d227d5c57030e692 Mon Sep 17 00:00:00 2001 From: Heeyong Song Date: Mon, 8 Jun 2020 17:39:43 +0900 Subject: [PATCH] Always throw an exception in GetEventThreadServices() if the Core is not running Change-Id: If6e77e7b61ba02319a39079c6619682d5bffd4a8 --- automated-tests/src/dali/utc-Dali-Actor.cpp | 40 ++++++++++++++++++++++++++++- dali/internal/event/actors/actor-impl.cpp | 3 +++ dali/internal/event/common/object-impl.h | 4 +-- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/automated-tests/src/dali/utc-Dali-Actor.cpp b/automated-tests/src/dali/utc-Dali-Actor.cpp index 2a9e110..e96ab7a 100644 --- a/automated-tests/src/dali/utc-Dali-Actor.cpp +++ b/automated-tests/src/dali/utc-Dali-Actor.cpp @@ -3875,7 +3875,7 @@ int UtcDaliActorAddRendererP(void) END_TEST; } -int UtcDaliActorAddRendererN(void) +int UtcDaliActorAddRendererN01(void) { tet_infoline("Testing Actor::AddRenderer"); TestApplication application; @@ -3905,6 +3905,44 @@ int UtcDaliActorAddRendererN(void) END_TEST; } +int UtcDaliActorAddRendererN02(void) +{ + tet_infoline( "UtcDaliActorAddRendererN02" ); + + Actor actor; + Renderer renderer; + + { + TestApplication application; + + Geometry geometry = CreateQuadGeometry(); + Shader shader = CreateShader(); + renderer = Renderer::New( geometry, shader ); + + actor = Actor::New(); + } + + // try illegal AddRenderer + try + { + actor.AddRenderer( renderer ); + tet_printf( "Assertion test failed - no Exception\n" ); + tet_result( TET_FAIL ); + } + catch( Dali::DaliException& e ) + { + DALI_TEST_PRINT_ASSERT( e ); + DALI_TEST_ASSERT( e, "EventThreadServices::IsCoreRunning()", TEST_LOCATION ); + } + catch(...) + { + tet_printf( "Assertion test failed - wrong Exception\n" ); + tet_result( TET_FAIL ); + } + + END_TEST; +} + int UtcDaliActorAddRendererOnStage(void) { tet_infoline("Testing Actor::AddRenderer"); diff --git a/dali/internal/event/actors/actor-impl.cpp b/dali/internal/event/actors/actor-impl.cpp index 4dfa789..7710dc5 100644 --- a/dali/internal/event/actors/actor-impl.cpp +++ b/dali/internal/event/actors/actor-impl.cpp @@ -415,6 +415,9 @@ const SceneGraph::Node* Actor::CreateNode() SceneGraph::Node* node = SceneGraph::Node::New(); OwnerPointer< SceneGraph::Node > transferOwnership( node ); Internal::ThreadLocalStorage* tls = Internal::ThreadLocalStorage::GetInternal(); + + DALI_ASSERT_ALWAYS( tls && "ThreadLocalStorage is null" ); + AddNodeMessage( tls->GetUpdateManager(), transferOwnership ); return node; diff --git a/dali/internal/event/common/object-impl.h b/dali/internal/event/common/object-impl.h index e2c5d9f..c9c1c00 100644 --- a/dali/internal/event/common/object-impl.h +++ b/dali/internal/event/common/object-impl.h @@ -532,7 +532,7 @@ protected: */ inline EventThreadServices& GetEventThreadServices() { - DALI_ASSERT_DEBUG( EventThreadServices::IsCoreRunning() ); + DALI_ASSERT_ALWAYS( EventThreadServices::IsCoreRunning() ); return mEventThreadServices; } @@ -545,7 +545,7 @@ protected: */ inline const EventThreadServices& GetEventThreadServices() const { - DALI_ASSERT_DEBUG( EventThreadServices::IsCoreRunning() ); + DALI_ASSERT_ALWAYS( EventThreadServices::IsCoreRunning() ); return mEventThreadServices; } -- 2.7.4