diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/inc/cameracontroller/camperformancelogger.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/inc/cameracontroller/camperformancelogger.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,123 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + + +#ifndef CAM_PERFORMANCELOGGER_H +#define CAM_PERFORMANCELOGGER_H + + +#include "camcameracontrollerflags.hrh" + + +#ifdef CAMERAAPP_PERFORMANCE_CONTROLLER +// =========================================================================== +_LIT( KCamPerformanceItemFormat, "%s duration: %d \n"); + +class TCamPerformanceItem + { + public: + TCamPerformanceItem( TCamCameraRequestId aId ) + : iId( aId ), iStart( Time64() ), iStop( iStart ) {}; + + TCamPerformanceItem( const TCamPerformanceItem& aOther ) + : iId( aOther.iId ), iStart( aOther.iStart ), iStop( aOther.iStop ) {}; + + void Start() { iStart = Time64(); iStop = iStart; }; + void Stop() { iStop = Time64(); }; + + TInt64 Time64() const + { + TTime time; + time.HomeTime(); + return time.Int64(); + }; + + TInt Duration() const + { + return (TInt)(iStop - iStart); + }; + + const TCamCameraRequestId iId; + TInt64 iStart; + TInt64 iStop; + }; + + + + +class CCamPerformanceLogger : public CBase + { + public: + CCamPerformanceLogger() {}; + ~CCamPerformanceLogger() + { + iData.Reset(); + iData.Close(); + }; + + void Requested( const TCamCameraRequestId& aRequest ) + { + TInt error = iData.Append( TCamPerformanceItem( aRequest ) ); + + if( KErrNone != error ) + { + // Ignored + } + }; + + void Completed( const TCamCameraRequestId& aRequest ) + { + // Set the end time for last performance item + // found with this id. + for( TInt i = iData.Count() - 1; i >= 0; i-- ) + { + if( aRequest == iData[i].iId ) + { + iData[i].Stop(); + return; + } + } + /// Ignore error if not found + }; + + TInt InfoSizeEstimate() const + { + return 50 * iData.Count(); + } + + void InfoText( TDes& aDes ) const + { + TInt count = iData.Count(); + for( TInt i = 0; i < count; i++ ) + { + const TCamPerformanceItem& item = iData[i]; + // ECamRequestNone used to mark sequence start and end. + if( item.iId >= ECamRequestNone && item.iId < ECamRequestLast ) + { + aDes.AppendFormat( KCamPerformanceItemFormat, KCamRequestNames[item.iId], item.Duration() ); + } + } + } + + private: + RArray iData; + }; +// =========================================================================== +#endif // CAMERAAPP_PERFORMANCE_CONTROLLER + +#endif // CAM_PERFORMANCELOGGER_H