memspy/Engine/Source/SysMemTracker/MemSpyEngineHelperSysMemTrackerEntryFbserv.cpp
changeset 0 a03f92240627
equal deleted inserted replaced
-1:000000000000 0:a03f92240627
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "MemSpyEngineHelperSysMemTrackerEntryFbserv.h"
       
    19 
       
    20 // System includes
       
    21 #include <e32base.h>
       
    22 #include <badesca.h>
       
    23 
       
    24 // Driver includes
       
    25 #include <memspy/driver/memspydriverclient.h>
       
    26 
       
    27 // User includes
       
    28 #include <memspy/engine/memspyengine.h>
       
    29 #include <memspy/engine/memspyengineutils.h>
       
    30 #include <memspy/engine/memspyengineoutputsink.h>
       
    31 #include <memspy/engine/memspyengineoutputlist.h>
       
    32 #include <memspy/engine/memspyenginehelperheap.h>
       
    33 #include <memspy/engine/memspyenginehelperchunk.h>
       
    34 #include <memspy/engine/memspyengineobjectthread.h>
       
    35 #include <memspy/engine/memspyengineobjectprocess.h>
       
    36 #include <memspy/engine/memspyengineobjectcontainer.h>
       
    37 #include <memspy/engine/memspyenginehelpercodesegment.h>
       
    38 #include "MemSpyEngineHelperSysMemTrackerImp.h"
       
    39 #include <memspy/engine/memspyenginehelpersysmemtrackercycle.h>
       
    40 #include <memspy/engine/memspyenginehelpersysmemtrackerconfig.h>
       
    41 
       
    42 
       
    43 
       
    44 
       
    45 CMemSpyEngineHelperSysMemTrackerEntryFbserv::CMemSpyEngineHelperSysMemTrackerEntryFbserv( CMemSpyEngineHelperSysMemTrackerImp& aTracker, const TMemSpyDriverChunkInfo& aCurrentLarge, const TMemSpyDriverChunkInfo& aCurrentShared, TInt aBitmapConCount, TInt aFontConCount, TInt aAccessibleBitmapCount )
       
    46 :   CMemSpyEngineHelperSysMemTrackerEntry( aTracker, EMemSpyEngineSysMemTrackerTypeFbserv ), 
       
    47     iCurrentLarge( aCurrentLarge ), iCurrentShared( aCurrentShared ), 
       
    48     iCurrentBitmapConCount( aBitmapConCount ), 
       
    49     iCurrentFontConCount( aFontConCount ),
       
    50     iCurrentAccessibleBitmapCount( aAccessibleBitmapCount )
       
    51     {
       
    52     iLastShared = aCurrentShared;
       
    53     iLastLarge = aCurrentLarge;
       
    54     iLastBitmapConCount = aBitmapConCount;
       
    55     iLastFontConCount = aFontConCount;
       
    56     iLastAccessibleBitmapCount = aAccessibleBitmapCount;
       
    57     }
       
    58 
       
    59 
       
    60 CMemSpyEngineHelperSysMemTrackerEntryFbserv::~CMemSpyEngineHelperSysMemTrackerEntryFbserv()
       
    61     {
       
    62     }
       
    63 
       
    64 
       
    65 void CMemSpyEngineHelperSysMemTrackerEntryFbserv::ConstructL()
       
    66     {
       
    67     }
       
    68 
       
    69 
       
    70 CMemSpyEngineHelperSysMemTrackerEntryFbserv* CMemSpyEngineHelperSysMemTrackerEntryFbserv::NewLC( CMemSpyEngineHelperSysMemTrackerImp& aTracker, const TMemSpyDriverChunkInfo& aCurrentLarge, const TMemSpyDriverChunkInfo& aCurrentShared, TInt aBitmapConCount, TInt aFontConCount, TInt aAccessibleBitmapCount )
       
    71     {
       
    72     CMemSpyEngineHelperSysMemTrackerEntryFbserv* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerEntryFbserv( aTracker, aCurrentLarge, aCurrentShared, aBitmapConCount, aFontConCount, aAccessibleBitmapCount );
       
    73     CleanupStack::PushL( self );
       
    74     self->ConstructL();
       
    75     return self;
       
    76     }
       
    77 
       
    78 
       
    79 TUint64 CMemSpyEngineHelperSysMemTrackerEntryFbserv::Key() const
       
    80     {
       
    81     const TUint32 val = ( Type() << 28 );
       
    82     TUint64 ret = val;
       
    83     ret <<= 32;
       
    84     ret += reinterpret_cast< TUint32 >( iCurrentLarge.iHandle );
       
    85     return ret;
       
    86     }
       
    87 
       
    88 
       
    89 void CMemSpyEngineHelperSysMemTrackerEntryFbserv::UpdateFromL( const CMemSpyEngineHelperSysMemTrackerEntry& aEntry )
       
    90     {
       
    91     const CMemSpyEngineHelperSysMemTrackerEntryFbserv& entry = static_cast< const CMemSpyEngineHelperSysMemTrackerEntryFbserv& >( aEntry );
       
    92     
       
    93     // Update state
       
    94     iLastShared = iCurrentShared;
       
    95     iCurrentShared = entry.iCurrentShared;
       
    96     iLastLarge = iCurrentLarge;
       
    97     iCurrentLarge = entry.iCurrentLarge;
       
    98     
       
    99     // Counts
       
   100     iLastBitmapConCount = iCurrentBitmapConCount;
       
   101     iCurrentBitmapConCount = entry.iCurrentBitmapConCount;
       
   102     //
       
   103     iLastFontConCount = iCurrentFontConCount;
       
   104     iCurrentFontConCount = entry.iCurrentFontConCount;
       
   105     //
       
   106     iLastAccessibleBitmapCount = iCurrentAccessibleBitmapCount;
       
   107     iCurrentAccessibleBitmapCount = entry.iCurrentAccessibleBitmapCount;
       
   108     }
       
   109 
       
   110 
       
   111 TBool CMemSpyEngineHelperSysMemTrackerEntryFbserv::HasChangedL( const TMemSpyEngineHelperSysMemTrackerConfig& /*aConfig*/ ) const
       
   112     {
       
   113     const TBool hasChanged = ( iCurrentShared.iSize != iLastShared.iSize ) || ( iCurrentLarge.iSize != iLastLarge.iSize ) ||
       
   114                              ( iCurrentFontConCount != iLastFontConCount ) || ( iCurrentBitmapConCount != iLastBitmapConCount ) ||
       
   115                              ( iCurrentAccessibleBitmapCount != iCurrentAccessibleBitmapCount )
       
   116                              ;
       
   117     return hasChanged;
       
   118     }
       
   119 
       
   120 
       
   121 void CMemSpyEngineHelperSysMemTrackerEntryFbserv::CreateChangeDescriptorL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
       
   122     {
       
   123     CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv* changeDescriptor = CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv::NewLC( Attributes(), iCurrentLarge, iCurrentShared, iCurrentBitmapConCount, iCurrentFontConCount, iCurrentAccessibleBitmapCount );
       
   124     aCycle.AddAndPopL( changeDescriptor );
       
   125     }
       
   126 
       
   127 
       
   128 void CMemSpyEngineHelperSysMemTrackerEntryFbserv::UpdateCycleStatistics( CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
       
   129     {
       
   130     aCycle.AddToMemoryUsed( iCurrentShared.iSize );
       
   131     aCycle.AddToMemoryUsed( iCurrentLarge.iSize );
       
   132     }
       
   133 
       
   134 
       
   135 
       
   136 
       
   137 
       
   138 
       
   139 
       
   140 
       
   141 
       
   142 
       
   143 
       
   144 
       
   145 
       
   146 
       
   147 
       
   148 
       
   149 
       
   150 
       
   151 
       
   152 
       
   153 
       
   154 
       
   155 
       
   156 
       
   157 
       
   158 
       
   159 
       
   160 
       
   161 
       
   162 
       
   163 
       
   164 
       
   165 
       
   166 
       
   167 
       
   168 
       
   169 
       
   170 
       
   171 
       
   172 
       
   173 
       
   174 
       
   175 
       
   176 
       
   177 CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv::CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv( TUint8 aAttribs, const TMemSpyDriverChunkInfoWithoutName& aCurrentLarge, const TMemSpyDriverChunkInfoWithoutName& aCurrentShared, TInt aBitmapConCount, TInt aFontConCount, TInt aAccessibleBitmapCount )
       
   178 :   CMemSpyEngineHelperSysMemTrackerCycleChange( aAttribs ), iSharedChunk( aCurrentShared ), iLargeChunk( aCurrentLarge ), iBitmapConCount( aBitmapConCount ), iFontConCount( aFontConCount ), iAccessibleBitmapCount( aAccessibleBitmapCount )
       
   179     {
       
   180     }
       
   181 
       
   182 
       
   183 CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv::~CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv()
       
   184     {
       
   185     }
       
   186 
       
   187 
       
   188 void CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv::ConstructL()
       
   189     {
       
   190     BaseConstructL();
       
   191     }
       
   192 
       
   193 
       
   194 CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv* CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv::NewLC( TUint8 aAttribs, const TMemSpyDriverChunkInfoWithoutName& aCurrentLarge, const TMemSpyDriverChunkInfoWithoutName& aCurrentShared, TInt aBitmapConCount, TInt aFontConCount, TInt aAccessibleBitmapCount )
       
   195     {
       
   196     CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv( aAttribs, aCurrentLarge, aCurrentShared, aBitmapConCount, aFontConCount, aAccessibleBitmapCount );
       
   197     CleanupStack::PushL( self );
       
   198     self->ConstructL();
       
   199     return self;
       
   200     }
       
   201 
       
   202 
       
   203 TMemSpyEngineSysMemTrackerType CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv::Type() const
       
   204     {
       
   205     return EMemSpyEngineSysMemTrackerTypeFbserv;
       
   206     }
       
   207    
       
   208 
       
   209 void CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv::OutputHeaderL( CMemSpyEngineOutputSink& aSink, CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
       
   210     {
       
   211     _LIT( KHeaderChunk, "Type, FbsSharedChunk[Handle,Base,Size,Max Size], FbsLargeChunk[Handle,Base,Size,Max Size], AllBC, BCC, FCC, Attribs");
       
   212     aSink.OutputLineL( KHeaderChunk );
       
   213     }
       
   214  
       
   215 
       
   216 void CMemSpyEngineHelperSysMemTrackerCycleChangeFbserv::OutputContentL( CMemSpyEngineOutputSink& aSink, CMemSpyEngineHelperSysMemTrackerCycle& /*aCycle*/ )
       
   217     {
       
   218     _LIT( KFormat, "%S,FbsSharedChunk[0x%08x,0x%08x,%d,%d],FbsLargeChunk[0x%08x,0x%08x,%d,%d],%d,%d,%d,%S" );
       
   219     //
       
   220     TMemSpySWMTTypeName type;;
       
   221     FormatType( type );
       
   222     //
       
   223     TBuf<20> attribs;
       
   224     FormatAttributes( attribs );
       
   225     //
       
   226     HBufC* buf = HBufC::NewLC( 1024 );
       
   227     TPtr pBuf(buf->Des());
       
   228 
       
   229     // Now output line
       
   230     pBuf.Format( KFormat, 
       
   231                  &type,
       
   232 
       
   233                  // Shared chunk
       
   234                  iSharedChunk.iHandle,
       
   235                  iSharedChunk.iBaseAddress,
       
   236                  iSharedChunk.iSize,
       
   237                  iSharedChunk.iMaxSize,
       
   238 
       
   239                  // Large chunk
       
   240                  iLargeChunk.iHandle,
       
   241                  iLargeChunk.iBaseAddress,
       
   242                  iLargeChunk.iSize,
       
   243                  iLargeChunk.iMaxSize,
       
   244 
       
   245                  // Container counts
       
   246                  iAccessibleBitmapCount,
       
   247                  iBitmapConCount,
       
   248                  iFontConCount,
       
   249 
       
   250                  &attribs
       
   251                  );
       
   252 
       
   253     aSink.OutputLineL( pBuf );
       
   254     CleanupStack::PopAndDestroy( buf );
       
   255     }
       
   256 
       
   257