diff -r 7c5dd702d6d3 -r f93c875b566e uiacceltk/hitchcock/coretoolkit/src/HuiFxEffect.cpp --- a/uiacceltk/hitchcock/coretoolkit/src/HuiFxEffect.cpp Tue May 11 17:03:00 2010 +0300 +++ b/uiacceltk/hitchcock/coretoolkit/src/HuiFxEffect.cpp Tue May 25 13:39:57 2010 +0300 @@ -22,6 +22,16 @@ #include "HuiRenderPlugin.h" #include "HuiCmdBufferBrush.h" // MHuiEffectable +#include "alfmoduletestconf.h" +#ifdef USE_MODULE_TEST_HOOKS_FOR_ALF + // Provides TLS object data for test cases. + // This is used only if module test hooks are set on. + #include "huistatictlsdata.h" +#endif // USE_MODULE_TEST_HOOKS_FOR_ALF +// Provides module test hook defines. +#include "alfmoduletestdefines.h" + + EXPORT_C CHuiFxEffect* CHuiFxEffect::NewL(CHuiFxEngine& aEngine) { CHuiFxEffect* e = new (ELeave) CHuiFxEffect( aEngine ); @@ -107,6 +117,40 @@ { return ETrue; // fade effect does not have observer that would need notification } + +#ifdef USE_MODULE_TEST_HOOKS_FOR_ALF + TTime endTime; + endTime.UniversalTime(); + + // There might be several BeginFullScreen for single effects. We want to calculate + // reaction time from the first BeginFullScreen event to this point + TInt timeStamps = 0; + AMT_GET_TIME_POINT_COUNT(iHandle, timeStamps); + + TInt64 temp; + TBool effects(EFalse); // dummy, 1 if effects were on for this time stamp + AMT_GET_TIME(temp, iHandle, 0, effects); + TTime startTime(temp); + + AMT_GET_TIME(temp, iHandle, timeStamps - 1, effects); + TTime effectStartTime(temp); + + TInt64 effectTime = endTime.MicroSecondsFrom(effectStartTime).Int64(); + TReal fps = (TReal)iFramesDrawn / ((TReal)effectTime / 1000000.0f) ; + + TInt64 totalEffectTime = endTime.MicroSecondsFrom(startTime).Int64(); + TInt64 reactionTime = effectStartTime.MicroSecondsFrom(startTime).Int64(); + + RDebug::Printf("CHuiFxEffect::NotifyEffectEndObserver - Reaction time \t0x%x\t%f\tVisible effect time:\t%f\ts. (%f FPS). Total effect time:\t%f", + iHandle, + (TReal)reactionTime / 1000000.0f, + ((TReal)effectTime)/1000000, + fps, + ((TReal)totalEffectTime)/1000000.0f + ); + AMT_RESET_TIME(iHandle); +#endif + if (iEffectEndObserver) { // The callback can be called only once when the effect finishes @@ -553,6 +597,13 @@ if (iFramesDrawn == 1) { +#ifdef USE_MODULE_TEST_HOOKS_FOR_ALF + // This is about the time when first frame from the effect is on screen + TTime endTime; + endTime.UniversalTime(); + + AMT_ADD_TIME(iHandle, endTime.Int64(), ETrue); +#endif aElapsedTime = 0; iFramesDrawn++; }