From: Jinho, Lee Date: Thu, 28 Sep 2017 04:27:46 +0000 (+0900) Subject: Merge branch 'devel/master' into tizen_4.0 X-Git-Tag: accepted/tizen/4.0/unified/20171010.163010~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f098c587718a9787320db3847a89bbc1e82e4e0c;hp=f5efbac5fd5298ba903cdc09d98458b7cbb779b2;p=platform%2Fcore%2Fuifw%2Fdali-core.git Merge branch 'devel/master' into tizen_4.0 Change-Id: Iaf47ae3327b8d0c6b3eb131b125d41309eab90b0 --- diff --git a/automated-tests/src/dali/dali-test-suite-utils/dali-test-suite-utils.cpp b/automated-tests/src/dali/dali-test-suite-utils/dali-test-suite-utils.cpp index 8877a50..b38428b 100644 --- a/automated-tests/src/dali/dali-test-suite-utils/dali-test-suite-utils.cpp +++ b/automated-tests/src/dali/dali-test-suite-utils/dali-test-suite-utils.cpp @@ -117,6 +117,7 @@ void DALI_TEST_EQUALS( const Matrix3& matrix1, const Matrix3& matrix2, const cha m1[6], m1[7], m1[8], m2[6], m2[7], m2[8]); tet_result(TET_FAIL); + throw("TET_FAIL"); } else { @@ -147,6 +148,7 @@ void DALI_TEST_EQUALS( const Matrix3& matrix1, const Matrix3& matrix2, float eps m1[6], m1[7], m1[8], m2[6], m2[7], m2[8]); tet_result(TET_FAIL); + throw("TET_FAIL"); } else { @@ -183,6 +185,7 @@ void DALI_TEST_EQUALS( const Matrix& matrix1, const Matrix& matrix2, const char* m1[12], m1[13], m1[14], m1[15], m2[12], m2[13], m2[14], m2[15]); tet_result(TET_FAIL); + throw("TET_FAIL"); } else { @@ -214,6 +217,7 @@ void DALI_TEST_EQUALS( const Matrix& matrix1, const Matrix& matrix2, float epsil m1[12], m1[13], m1[14], m1[15], m2[12], m2[13], m2[14], m2[15]); tet_result(TET_FAIL); + throw("TET_FAIL"); } else { @@ -251,6 +255,7 @@ void DALI_TEST_EQUALS( Property::Value& str1, const char* str2, const char* loca else { tet_result(TET_FAIL); + throw("TET_FAIL"); } } @@ -265,6 +270,7 @@ void DALI_TEST_ASSERT( DaliException& e, std::string conditionSubString, const c { fprintf(stderr, "Expected substring '%s' : actual exception string '%s' : location %s\n", conditionSubString.c_str(), e.condition, location ); tet_result(TET_FAIL); + throw("TET_FAIL"); } else { @@ -294,6 +300,7 @@ void ConstraintAppliedCheck::CheckSignalReceived() { fprintf(stderr, "Expected Applied signal was not received\n" ); tet_result( TET_FAIL ); + throw("TET_FAIL"); } else { @@ -307,6 +314,7 @@ void ConstraintAppliedCheck::CheckSignalNotReceived() { fprintf(stderr, "Unexpected Applied signal was received\n" ); tet_result( TET_FAIL ); + throw("TET_FAIL"); } else { diff --git a/automated-tests/src/dali/dali-test-suite-utils/dali-test-suite-utils.h b/automated-tests/src/dali/dali-test-suite-utils/dali-test-suite-utils.h index 2b84d39..4f71920 100644 --- a/automated-tests/src/dali/dali-test-suite-utils/dali-test-suite-utils.h +++ b/automated-tests/src/dali/dali-test-suite-utils/dali-test-suite-utils.h @@ -40,11 +40,24 @@ using namespace Dali; #define STRINGIZE_I(text) #text #define STRINGIZE(text) STRINGIZE_I(text) -// the following is the other compilers way of token pasting, gcc seems to just concatenate strings automatically -//#define TOKENPASTE(x,y) x ## y -#define TOKENPASTE(x,y) x y -#define TOKENPASTE2(x,y) TOKENPASTE( x, y ) -#define TEST_LOCATION TOKENPASTE2( "Test failed in ", TOKENPASTE2( __FILE__, TOKENPASTE2( ", line ", STRINGIZE(__LINE__) ) ) ) +/** + * Inspired by https://stackoverflow.com/questions/1706346/file-macro-manipulation-handling-at-compile-time + * answer by Chetan Reddy + */ +constexpr int32_t basenameIndex( const char * const path, const int32_t index = 0, const int32_t slashIndex = -1 ) +{ + return path[ index ] + ? ( path[ index ] == '/' + ? basenameIndex( path, index + 1, index ) + : basenameIndex( path, index + 1, slashIndex ) ) + : ( slashIndex + 1 ); +} + +#define __FILELINE__ ( { static const int32_t basenameIdx = basenameIndex( __FILE__ ); \ + static_assert (basenameIdx >= 0, "compile-time basename" ); \ + __FILE__ ":" STRINGIZE(__LINE__) + basenameIdx ; } ) + +#define TEST_LOCATION __FILELINE__ #define TEST_INNER_LOCATION(x) ( std::string(x) + " (" + STRINGIZE(__LINE__) + ")" ).c_str() #define TET_UNDEF 2 @@ -73,7 +86,7 @@ if ( (condition) ) } \ else \ { \ - fprintf(stderr, "%s Failed in %s at line %d\n", __PRETTY_FUNCTION__, __FILE__, __LINE__); \ + fprintf(stderr, "Test failed in %s, condition: %s\n", __FILELINE__, #condition ); \ tet_result(TET_FAIL); \ throw("TET_FAIL"); \ } @@ -97,8 +110,9 @@ inline void DALI_TEST_EQUALS(Type value1, Type value2, const char* location) { std::ostringstream o; o << value1 << " == " << value2 << std::endl; - fprintf(stderr, "%s, checking %s", location, o.str().c_str()); + fprintf(stderr, "Test failed in %s, checking %s", location, o.str().c_str()); tet_result(TET_FAIL); + throw("TET_FAIL"); \ } else { @@ -106,6 +120,13 @@ inline void DALI_TEST_EQUALS(Type value1, Type value2, const char* location) } } +/** + * Test whether two values are equal. + * @param[in] value1 The first value + * @param[in] value2 The second value + */ +#define DALI_TEST_EQUAL( v1, v2 ) DALI_TEST_EQUALS( v1, v2, __FILELINE__ ) + template inline void DALI_TEST_EQUALS(Type value1, Type value2, float epsilon, const char* location) { @@ -113,8 +134,9 @@ inline void DALI_TEST_EQUALS(Type value1, Type value2, float epsilon, const char { std::ostringstream o; o << value1 << " == " << value2 << std::endl; - fprintf(stderr, "%s, checking %s", location, o.str().c_str()); + fprintf(stderr, "Test failed in %s, checking %s", location, o.str().c_str()); tet_result(TET_FAIL); + throw("TET_FAIL"); \ } else { @@ -129,8 +151,9 @@ inline void DALI_TEST_NOT_EQUALS(Type value1, Type value2, float epsilon, const { std::ostringstream o; o << value1 << " != " << value2 << std::endl; - fprintf(stderr, "%s, checking %s", location, o.str().c_str()); + fprintf(stderr, "Test failed in %s, checking %s", location, o.str().c_str()); tet_result(TET_FAIL); + throw("TET_FAIL"); \ } else { @@ -151,13 +174,15 @@ inline void DALI_TEST_EQUALS( TimePeriod value1, TimePeriod value2, { if ((fabs(value1.durationSeconds - value2.durationSeconds) > epsilon)) { - fprintf(stderr, "%s, checking durations %f == %f, epsilon %f\n", location, value1.durationSeconds, value2.durationSeconds, epsilon); + fprintf(stderr, "Test failed in %s, checking durations %f == %f, epsilon %f\n", location, value1.durationSeconds, value2.durationSeconds, epsilon); tet_result(TET_FAIL); + throw("TET_FAIL"); \ } else if ((fabs(value1.delaySeconds - value2.delaySeconds) > epsilon)) { - fprintf(stderr, "%s, checking delays %f == %f, epsilon %f\n", location, value1.delaySeconds, value2.delaySeconds, epsilon); + fprintf(stderr, "Test failed in %s, checking delays %f == %f, epsilon %f\n", location, value1.delaySeconds, value2.delaySeconds, epsilon); tet_result(TET_FAIL); + throw("TET_FAIL"); \ } else { @@ -232,8 +257,9 @@ inline void DALI_TEST_EQUALS( const char* str1, const char* str2, c { if (strcmp(str1, str2)) { - fprintf(stderr, "%s, checking '%s' == '%s'\n", location, str1, str2); + fprintf(stderr, "Test failed in %s, checking '%s' == '%s'\n", location, str1, str2); tet_result(TET_FAIL); + throw("TET_FAIL"); \ } else { @@ -289,8 +315,9 @@ void DALI_TEST_GREATER( T value1, T value2, const char* location) { if (!(value1 > value2)) { - std::cerr << location << ", checking " << value1 <<" > " << value2 << "\n"; + std::cerr << "Test failed in " << location << ", checking " << value1 <<" > " << value2 << "\n"; tet_result(TET_FAIL); + throw("TET_FAIL"); \ } else { diff --git a/automated-tests/src/dali/dali-test-suite-utils/test-harness.cpp b/automated-tests/src/dali/dali-test-suite-utils/test-harness.cpp index 840ef0d..645d74b 100644 --- a/automated-tests/src/dali/dali-test-suite-utils/test-harness.cpp +++ b/automated-tests/src/dali/dali-test-suite-utils/test-harness.cpp @@ -52,7 +52,14 @@ int RunTestCase( struct ::testcase_s& testCase ) { testCase.startup(); } - result = testCase.function(); + try + { + result = testCase.function(); + } + catch( const char* ) + { + // just catch test fail exception, return is already set to EXIT_STATUS_TESTCASE_FAILED + } if( testCase.cleanup ) { testCase.cleanup(); diff --git a/dali/internal/event/actors/actor-impl.cpp b/dali/internal/event/actors/actor-impl.cpp index e1675cf..eb3ec85 100644 --- a/dali/internal/event/actors/actor-impl.cpp +++ b/dali/internal/event/actors/actor-impl.cpp @@ -5209,7 +5209,7 @@ void Actor::Lower() ActorContainer& siblings = *(mParent->mChildren); if( siblings.front() != this ) // If not already at beginning { - for( size_t i=0; i& container, T* object, Di } } +/** + * Descends into node's hierarchy and sorts the children of each child according to their depth-index. + * @param[in] node The node whose hierarchy to descend + */ +void SortSiblingNodesRecursively( Node& node ) +{ + NodeContainer& container = node.GetChildren(); + std::sort( container.Begin(), container.End(), + []( Node* a, Node* b ) { return a->GetDepthIndex() < b->GetDepthIndex(); } ); + + // Descend tree and sort as well + for( auto&& iter : container ) + { + SortSiblingNodesRecursively( *iter ); + } } +} // unnamed namespace + /** * Structure to contain UpdateManager internal data */ @@ -1022,6 +1039,9 @@ void UpdateManager::SetDepthIndices( OwnerPointer< NodeDepths >& nodeDepths ) { iter.node->SetDepthIndex( iter.sortedDepth ); } + + // Go through node hierarchy and rearrange siblings according to depth-index + SortSiblingNodesRecursively( *( mImpl->root ) ); } void UpdateManager::AddSampler( OwnerPointer< Render::Sampler >& sampler ) diff --git a/dali/internal/update/render-tasks/scene-graph-camera.cpp b/dali/internal/update/render-tasks/scene-graph-camera.cpp index e6b088c..56e6b9e 100644 --- a/dali/internal/update/render-tasks/scene-graph-camera.cpp +++ b/dali/internal/update/render-tasks/scene-graph-camera.cpp @@ -154,6 +154,7 @@ const Vector3 Camera::DEFAULT_TARGET_POSITION( 0.0f, 0.0f, 0.0f ); Camera::Camera() : mUpdateViewFlag( UPDATE_COUNT ), mUpdateProjectionFlag( UPDATE_COUNT ), + mNode( NULL ), mType( DEFAULT_TYPE ), mProjectionMode( DEFAULT_MODE ), mInvertYAxis( DEFAULT_INVERT_Y_AXIS ), diff --git a/dali/public-api/dali-core-version.cpp b/dali/public-api/dali-core-version.cpp index 6dade72..549a9e1 100644 --- a/dali/public-api/dali-core-version.cpp +++ b/dali/public-api/dali-core-version.cpp @@ -28,7 +28,7 @@ namespace Dali const unsigned int CORE_MAJOR_VERSION = 1; const unsigned int CORE_MINOR_VERSION = 2; -const unsigned int CORE_MICRO_VERSION = 56; +const unsigned int CORE_MICRO_VERSION = 58; const char * const CORE_BUILD_DATE = __DATE__ " " __TIME__; #ifdef DEBUG_ENABLED diff --git a/packaging/dali.spec b/packaging/dali.spec index f324f6e..b650cab 100644 --- a/packaging/dali.spec +++ b/packaging/dali.spec @@ -1,6 +1,6 @@ Name: dali Summary: DALi 3D Engine -Version: 1.2.56 +Version: 1.2.58 Release: 1 Group: System/Libraries License: Apache-2.0 and BSD-3-Clause and MIT