X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftoolkit-event-thread-callback.cpp;h=b809b87ffd44ff42cec3b78b5da5fe9309fbaccf;hb=fbb1f2f599b2fc1a54b327039ce6111f4b4ba4cf;hp=f77cdde0acdbc87df63a3cb61712c07c0cb4a56d;hpb=75fdb5f9730fa6f6723c517691c9778fb646d082;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-event-thread-callback.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-event-thread-callback.cpp index f77cdde..b809b87 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-event-thread-callback.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-event-thread-callback.cpp @@ -21,7 +21,10 @@ #include #include #include +#include #include +#include +#include namespace Dali { @@ -63,14 +66,18 @@ void EventThreadCallback::Trigger() } } -void EventThreadCallback::WaitingForTrigger(unsigned int count) +bool EventThreadCallback::WaitingForTrigger(unsigned int count, unsigned int seconds) { if( mImpl->triggeredCount >= count ) { - return; + return true; } + struct timespec now; + clock_gettime( CLOCK_REALTIME, &now ); + now.tv_sec += seconds; mImpl->expectedCount = count; - sem_wait( &(mImpl->mySemaphore) ); + int error = sem_timedwait( &(mImpl->mySemaphore), &now ); + return error != 0; } CallbackBase* EventThreadCallback::GetCallback() @@ -84,3 +91,46 @@ EventThreadCallback* EventThreadCallback::Get() } } + +namespace Test +{ + +bool WaitForEventThreadTrigger( int triggerCount ) +{ + bool success = true; + const int TEST_TIMEOUT(30); + + struct timespec startTime; + struct timespec now; + clock_gettime( CLOCK_REALTIME, &startTime ); + now.tv_sec = startTime.tv_sec; + now.tv_nsec = startTime.tv_nsec; + + Dali::EventThreadCallback* eventTrigger = NULL; + while( eventTrigger == NULL ) + { + eventTrigger = Dali::EventThreadCallback::Get(); + clock_gettime( CLOCK_REALTIME, &now ); + if( now.tv_sec - startTime.tv_sec > TEST_TIMEOUT ) + { + success = false; + break; + } + usleep(10); + } + if( eventTrigger != NULL ) + { + Dali::CallbackBase* callback = eventTrigger->GetCallback(); + eventTrigger->WaitingForTrigger( triggerCount, TEST_TIMEOUT - (now.tv_sec - startTime.tv_sec) ); + Dali::CallbackBase::Execute( *callback ); + } + + clock_gettime( CLOCK_REALTIME, &now ); + if( now.tv_sec > startTime.tv_sec + 1 ) + { + fprintf(stderr, "WaitForEventThreadTrigger took %ld seconds\n", now.tv_sec - startTime.tv_sec ); + } + return success; +} + +}