memspy/Engine/Source/SysMemTracker/MemSpyEngineHelperSysMemTrackerEntryManager.cpp
changeset 51 98307c651589
parent 42 0ff24a8f6ca2
child 52 c2f44e33b468
--- a/memspy/Engine/Source/SysMemTracker/MemSpyEngineHelperSysMemTrackerEntryManager.cpp	Fri Aug 27 11:37:29 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1150 +0,0 @@
-/*
-* Copyright (c) 2009 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:
-*
-*/
-
-#include "MemSpyEngineHelperSysMemTrackerEntryManager.h"
-
-// System includes
-#include <e32debug.h>
-
-// Driver includes
-#include <memspy/driver/memspydriverclient.h>
-
-// User includes
-#include <memspy/engine/memspyengine.h>
-#include <memspy/engine/memspyengineutils.h>
-#include <memspy/engine/memspyenginemidwife.h>
-#include <memspy/engine/memspyengineundertaker.h>
-#include <memspy/engine/memspyengineobjectthread.h>
-#include <memspy/engine/memspyengineobjectprocess.h>
-#include <memspy/engine/memspyengineobjectcontainer.h>
-#include <memspy/engine/memspyenginehelperheap.h>
-#include <memspy/engine/memspyenginehelperchunk.h>
-#include <memspy/engine/memspyenginehelperfbserv.h>
-#include <memspy/engine/memspyenginehelperfilesystem.h>
-#include <memspy/engine/memspyenginehelpercodesegment.h>
-#include <memspy/engine/memspyenginehelperkernelcontainers.h>
-#include <memspy/engine/memspyenginehelperwindowserver.h>
-#include <memspy/engine/memspyenginehelpersysmemtracker.h>
-#include "MemSpyEngineHelperSysMemTrackerImp.h"
-#include "MemSpyEngineHelperSysMemTrackerLog.h"
-#include <memspy/engine/memspyenginehelpersysmemtrackercycle.h>
-#include <memspy/engine/memspyenginehelpersysmemtrackercyclechange.h>
-#include "MemSpyEngineHelperSysMemTrackerEntries.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryChunk.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryGlobalData.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryHeap.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryRamDrive.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryStack.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryCode.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryHandleGeneric.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryHandlePAndS.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryOpenFile.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryDiskSpace.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryBitmap.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryFbserv.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryFileServerCache.h"
-#include "MemSpyEngineHelperSysMemTrackerEntrySystemMemory.h"
-#include "MemSpyEngineHelperSysMemTrackerEntryWindowServer.h"
-
-
-// Constants
-
-// Message printed to RDebug output for some clients that may be reading traces 
-_LIT( KMemSpyKeepaliveMessage, "<MEMSPY_PROGRESS>" );
-
-
-CMemSpyEngineHelperSysMemTrackerEntryManager::CMemSpyEngineHelperSysMemTrackerEntryManager( CMemSpyEngineHelperSysMemTrackerImp& aTracker, CMemSpyEngineHelperSysMemTrackerEntryManager* aMasterList )
-:   iTracker( aTracker ), iMasterList( aMasterList )
-    {
-    }
-
-    
-CMemSpyEngineHelperSysMemTrackerEntryManager::~CMemSpyEngineHelperSysMemTrackerEntryManager()
-    {
-    iEntries.ResetAndDestroy();
-    iEntries.Close();
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::ConstructL()
-    {
-    CreateSeedItemsL();
-    }
-
-
-CMemSpyEngineHelperSysMemTrackerEntryManager* CMemSpyEngineHelperSysMemTrackerEntryManager::NewL( CMemSpyEngineHelperSysMemTrackerImp& aTracker )
-    {
-    CMemSpyEngineHelperSysMemTrackerEntryManager* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerEntryManager( aTracker );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-CMemSpyEngineHelperSysMemTrackerEntryManager* CMemSpyEngineHelperSysMemTrackerEntryManager::NewL( CMemSpyEngineHelperSysMemTrackerImp& aTracker, CMemSpyEngineHelperSysMemTrackerEntryManager& aMasterList )
-    {
-    CMemSpyEngineHelperSysMemTrackerEntryManager* self = new(ELeave) CMemSpyEngineHelperSysMemTrackerEntryManager( aTracker, &aMasterList );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::IdentifyChangesL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
-    {
-    // Mark everything in this list (i.e. the master list) as dead.
-    MarkEverythingDead();
-
-    // Create a new list which will act as a secondary list. This new list will only contain
-    // new entries. Any entries which it attempts to create that already exist in the master list
-    // will be discared (after updating the corresponding master list entry with new values).
-    CMemSpyEngineHelperSysMemTrackerEntryManager* newEM = CMemSpyEngineHelperSysMemTrackerEntryManager::NewL( iTracker, *this );
-    CleanupStack::PushL( newEM );
-
-    // At this point, we have performed several key operations
-    // 
-    // 1) We have tagged everything that is still alive as "alive".
-    // 2) We have left everything that no longer exists as "dead"
-    // 3) We have updated all alive entries with new values (if they have changed)
-    // 4) We have identified new entries (these are currently orphaned within the secondary list right now).
-    //
-    // We now need to merge the two lists, i.e. take all the new entries in 'newEM' and merge them
-    // into the current master list.
-    MergeListIntoMeL( *newEM );
-
-    // We can throw the other list away now as it will be empty.
-    CleanupStack::PopAndDestroy( newEM );
-
-    // At this point we have our final new list, but it still contains dead entries.
-    // We must next output all the change information required for this cycle.
-    ProcessChangesL( aCycle );
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::EverythingHasChangedL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
-    {
-    ProcessChangesL( aCycle );
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::ProcessChangesL( CMemSpyEngineHelperSysMemTrackerCycle& aCycle )
-    {
-    const TInt count = iEntries.Count();
-    for( TInt i=count-1; i>=0; i-- )
-        {
-        CMemSpyEngineHelperSysMemTrackerEntry* entry = iEntries[ i ];
-        
-        // Create any change descriptors etc
-        TRAP_IGNORE( entry->HandleNewCycleL( aCycle ) );
-
-        // Destroy the entry if it's no longer needed
-        if  ( entry->IsDead() )
-            {
-            delete entry;
-            iEntries.Remove( i );
-            }
-        else
-            {
-            // It's not new anymore
-            entry->SetNew( EFalse );
-            }
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::AddItemAndPopL( CMemSpyEngineHelperSysMemTrackerEntry* aItem )
-    {
-    // We sort by entry key, we do not allow duplicates
-    TLinearOrder<CMemSpyEngineHelperSysMemTrackerEntry> orderer( CompareKey );
-
-    // Before we save the entry we must check to see if the master list knows about it.
-    const TUint64 key( aItem->Key() );
-
-    // Operates in one of two ways. If we're in stand-alone mode, then it saves every specified entry.
-    // If we're in secondary mode (i.e. we have an associated master list) then it only saves new entries.
-    // Entries which are changed are updated (in the master list) and entries that don't exist anymore
-    // are tagged as dead.
-    //
-    if  ( ActingAsSecondaryList() )
-        {
-        CMemSpyEngineHelperSysMemTrackerEntry* existingEntry = iMasterList->EntryByKey( key );
-        if  ( existingEntry )
-            {
-            // Entry used to exist, still does. Update the master list entry with the information
-            // from the transient (new) entry.
-            existingEntry->UpdateFromL( *aItem );
-
-            // Entry is still alive. Previously, at the start of the cycle, we'd tagged all master list
-            // entries as dead, hence we must undo that if we find the entry really still exists...
-            // NB: this also updates the timestamp for the entry, to show when it was last still alive.
-            existingEntry->SetAlive();
-
-            // But it definitely isn't new anymore as we've seen it at least once before
-            existingEntry->SetNew( EFalse );
-
-            // Transient entry not needed anymore, keep original
-            CleanupStack::PopAndDestroy( aItem );
-            }
-        else
-            {
-            // Entry didn't exist before - it's a new one
-            iEntries.InsertInOrderL( aItem, orderer );
-            CleanupStack::Pop( aItem );
-            }
-
-        // Any entries in the master list which aren't present anymore in this list (aka, dead entries)
-        // will remain tagged as dead and will be filtered out and dealt with shortly...
-        }
-    else
-        {
-        // We ARE the master list
-        const TInt err = iEntries.InsertInOrder( aItem, orderer );
-        if  ( err == KErrAlreadyExists )
-            {
-            // Don't allow duplicates
-            RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::AddItemAndPopL() - ******* duplicate key ******* key: %LU, type: %d, tid: 0x%08x, pid: 0x%08x, handle: 0x%08x", key, aItem->Type(), (TUint32) aItem->ThreadId(), (TUint32) aItem->ProcessId(), aItem->Handle() );
-            delete aItem;
-            }
-        else if ( err != KErrNone )
-            {
-            User::Leave( err );
-            }
-
-        CleanupStack::Pop( aItem );
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::MarkEverythingDead()
-    {
-    const TInt count = iEntries.Count();
-    for( TInt i=count-1; i>=0; i-- )
-        {
-        CMemSpyEngineHelperSysMemTrackerEntry* entry = iEntries[ i ];
-        entry->SetDead();
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::MergeListIntoMeL( CMemSpyEngineHelperSysMemTrackerEntryManager& aOtherList )
-    {
-    const TInt count = aOtherList.iEntries.Count();
-    for( TInt i=count-1; i>=0; i-- )
-        {
-        CMemSpyEngineHelperSysMemTrackerEntry* entry = aOtherList.iEntries[ i ];
-        CleanupStack::PushL( entry );
-        aOtherList.iEntries.Remove( i );
-        AddItemAndPopL( entry );
-        }
-    }
-
-
-TInt CMemSpyEngineHelperSysMemTrackerEntryManager::FindByHandle( TUint aHandle, TMemSpyEngineSysMemTrackerType aType ) const
-    {
-    TInt ret = KErrNotFound;
-    //
-    const TInt count = iEntries.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        const CMemSpyEngineHelperSysMemTrackerEntry* entry = iEntries[ i ];
-        if  ( entry->Handle() == aHandle && entry->Type() == aType )
-            {
-            ret = i;
-            break;
-            }
-        }
-    //
-    return ret;
-    }
-
-
-TInt CMemSpyEngineHelperSysMemTrackerEntryManager::FindByThreadId( const TThreadId& aThreadId ) const
-    {
-    TInt ret = KErrNotFound;
-    //
-    const TInt count = iEntries.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        const CMemSpyEngineHelperSysMemTrackerEntry* entry = iEntries[ i ];
-        if  ( entry->ThreadId() == aThreadId )
-            {
-            ret = i;
-            break;
-            }
-        }
-    //
-    return ret;
-    }
-
-
-CMemSpyEngineHelperSysMemTrackerEntry* CMemSpyEngineHelperSysMemTrackerEntryManager::EntryByKey( const TUint64& aKey )
-    {
-    TLinearOrder<CMemSpyEngineHelperSysMemTrackerEntry> orderer( CompareKey );
-    //
-    CMemSpyEngineHelperSysMemTrackerEntryWithSuppliedKey tempEntry( iTracker, aKey );
-    const TInt pos = iEntries.FindInOrder( &tempEntry, orderer );
-    //
-    CMemSpyEngineHelperSysMemTrackerEntry* ret = NULL;
-    if  ( pos >= 0 )
-        {
-        ret = iEntries[ pos ];
-        }
-    //
-    return ret;
-    }
-
-
-TInt CMemSpyEngineHelperSysMemTrackerEntryManager::CompareKey( const CMemSpyEngineHelperSysMemTrackerEntry& aLeft, const CMemSpyEngineHelperSysMemTrackerEntry& aRight )
-    {
-    TInt ret = -1;
-    //
-    const TUint64 kLeft( aLeft.Key() );
-    const TUint64 kRight( aRight.Key() );
-    //
-    if  ( kLeft > kRight )
-        {
-        ret = 1;
-        }
-    else if ( kLeft == kRight )
-        {
-        ret = 0;
-        }
-    //
-    return ret;
-    }
-
-
-TInt CMemSpyEngineHelperSysMemTrackerEntryManager::CompareKeyAndTimeStamp( const CMemSpyEngineHelperSysMemTrackerEntry& aLeft, const CMemSpyEngineHelperSysMemTrackerEntry& aRight )
-    {
-    TInt ret = CompareKey( aLeft, aRight );
-    if  ( ret == 0 )
-        {
-        // Keys are the same, so compare time stamps
-        const TTime& tLeft = aLeft.LastUpdateTime();
-        const TTime& tRight = aRight.LastUpdateTime();
-        //
-        ret = -1;
-        if  ( tLeft > tRight )
-            {
-            ret = 1;
-            }
-        else if ( tLeft == tRight )
-            {
-            ret = 0;
-            }
-        }
-    //
-    return ret;
-    }
-
-
-CMemSpyEngine& CMemSpyEngineHelperSysMemTrackerEntryManager::Engine()
-    {
-    return iTracker.Engine();
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL()
-    {
-    RDebug::Print( KMemSpyKeepaliveMessage );
-    
-    TMemSpyEngineHelperSysMemTrackerConfig config;
-    Engine().HelperSysMemTracker().GetConfig( config );
-    
-    // Get chunk list for entire device
-    CMemSpyEngineChunkList* chunks = Engine().HelperChunk().ListL( );
-    CleanupStack::PushL( chunks );
-
-#ifdef SYSMEMTRACKERLOGGING
-    {
-    const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() - MASTER - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-    
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryFileServerCache )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // Extract F32 cache chunk
-        CreateSeedItemsFileServerCacheL( *chunks );        
-        }
-
-#ifdef SYSMEMTRACKERLOGGING
-    {
-    const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() -  AFTER F32 CACHE - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-
-// TODO: Uncomment when  bitmap handels are fixed
-//    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryBitmapHandles )
-//        {
-//        RDebug::Print( KMemSpyKeepaliveMessage );
-//        // Bitmap
-//        CreateSeedItemsBitmapL( *chunks );        
-//        }
-
-#ifdef SYSMEMTRACKERLOGGING
-    {
-    const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() -  AFTER BITMAPS - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserHeap )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // Look for user heaps
-        CreateSeedItemsHeapUserL( *chunks );
-        }
-
-#ifdef SYSMEMTRACKERLOGGING
-    {
-    const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() -  AFTER USER HEAP - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-
-//  TODO: Uncomment after fix
-//    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHeap )
-//        {
-//        RDebug::Print( KMemSpyKeepaliveMessage );
-//        // Look for kernel heaps
-//        CreateSeedItemsHeapKernelL( *chunks );
-//        }
-
-#ifdef SYSMEMTRACKERLOGGING
-    {
-    const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() -  AFTER KERNEL HEAP - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryLocalChunks )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // Local chunks
-        CreateSeedItemsChunkLocalL( *chunks );        
-        }
-
-#ifdef SYSMEMTRACKERLOGGING
-    {
-    const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() -  AFTER LOCL CHUNK - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalChunks )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // Global chunks
-        CreateSeedItemsChunkGlobalL( *chunks );        
-        }
-
-#ifdef SYSMEMTRACKERLOGGING
-    {
-    const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() -  AFTER GLOB CHUNK - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMDrive )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // RAM drive
-        CreateSeedItemRamDriveL( *chunks );        
-        }
-
-#ifdef SYSMEMTRACKERLOGGING
-    {
-    const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() -  AFTER RAMD - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-
-//    TODO: Uncomment after fix
-//    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryUserStacks )
-//        {
-//        RDebug::Print( KMemSpyKeepaliveMessage );
-//        // Stacks ($DAT)
-//        CreateSeedItemsStacksL( *chunks );        
-//        }
-
-#ifdef SYSMEMTRACKERLOGGING
-     {
-   const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() -  AFTER STACKS - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-
-//  TODO: Uncomment after fix
-//    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryGlobalData )
-//        {
-//        RDebug::Print( KMemSpyKeepaliveMessage );
-//        // Global data (DLL$DATA)
-//        CreateSeedItemsGlobalDataL( *chunks );        
-//        }
-
- #ifdef SYSMEMTRACKERLOGGING
-    {
-    const TInt chunkCount = chunks->Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = chunks->At( i ).Info();
-        RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsL() -  AFTER GLOBAL DATA - info[%03d]: type: %d, size: %d, name: %S"), i, info.iType, info.iSize, &info.iName );
-        }
-    }
-#endif
-
-    // Don't need the chunks anymore
-    CleanupStack::PopAndDestroy( chunks );
-
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryRAMLoadedCode )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // Code
-        CreateSeedItemsCodeL();        
-        }
-
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryKernelHandles )
-        {
-        // Handles
-        RDebug::Print( KMemSpyKeepaliveMessage);
-        CreateSeedItemsHandlesL();        
-        }
-
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryOpenFiles )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // Open files
-        CreateSeedItemsOpenFilesL();        
-        }
-
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryDiskusage )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // Disk space
-        CreateSeedItemsDiskSpaceL();        
-        }
-
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategorySystemMemory )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // System memory
-        CreateSeedItemsSystemMemoryL();        
-        }
-	
-    if ( config.iEnabledCategories & TMemSpyEngineHelperSysMemTrackerConfig::EMemSpyEngineSysMemTrackerCategoryWindowGroups )
-        {
-        RDebug::Print( KMemSpyKeepaliveMessage );
-        // Window Server
-        CreateSeedItemsWindowServerL();        
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapUserL( CMemSpyEngineChunkList& aList )
-    {
-    CMemSpyEngine& engine = Engine();
-    const TInt procCount = engine.Container().Count();
-    for(TInt i=0; i<procCount; i++)
-        {
-        if ( !( i % 10 ) ) // Print the message on only every 10th cycle
-            {
-            RDebug::Print( KMemSpyKeepaliveMessage  );
-            }
-        CMemSpyProcess& process = engine.Container().At( i );
-        TRAP_IGNORE( CreateSeedItemsHeapUserL( process, &aList ) );
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapUserL( CMemSpyProcess& aProcess, CMemSpyEngineChunkList* aList )
-    {
-    SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapUserL() - START - aProcess: %d", (TUint) aProcess.Id() ) );
-    
-    CMemSpyEngine& engine = Engine();
-    engine.ProcessSuspendLC( aProcess.Id() );
-
-    const TInt threadCount = aProcess.Count();
-    SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapUserL() - threadCount: %d", threadCount ) );
-
-    for( TInt j=0; j<threadCount; j++ )
-        {
-        CMemSpyThread& thread = aProcess.At( j );
-        //
-        if  ( !thread.IsDead() )
-            {
-            TRAP_IGNORE( CreateSeedItemsHeapUserL( thread, aList ) );
-            }
-        }
-    
-    CleanupStack::PopAndDestroy(); // ProcessSuspendLC
-
-    SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapUserL() - END" ) );
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapUserL( CMemSpyThread& aThread, CMemSpyEngineChunkList* aList )
-    {
-    TBool exists = FindByThreadId( aThread.Id() ) != KErrNotFound;
-    //
-    if  ( !exists )
-        {
-        CMemSpyEngineHelperSysMemTrackerEntryHeap* entry = CMemSpyEngineHelperSysMemTrackerEntryHeap::NewUserLC( iTracker, aThread );
-
-        // Check if chunk already logged
-        TInt entryIndex = FindByHandle( entry->Handle(), EMemSpyEngineSysMemTrackerTypeHeapUser ); 
-        exists =  entryIndex != KErrNotFound;
-        SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapUserL() - heapChunkHandle: 0x%08x, already exists: %d", entry->Handle(), exists ) );
-        if ( exists )
-            {
-            CMemSpyEngineHelperSysMemTrackerEntryHeap& sharedheapEntry = static_cast< CMemSpyEngineHelperSysMemTrackerEntryHeap& >( *iEntries[ entryIndex ] );
-            sharedheapEntry.SetAsShared( ETrue );
-            }
-
-        // Remove utilised entries
-        if  ( aList )
-            {
-            aList->RemoveByHandle( (TAny*) entry->Handle() );
-            }
-
-        // Save
-        if  ( !exists )
-            {
-            AddItemAndPopL( entry );
-            }
-        else
-            {
-            CleanupStack::PopAndDestroy( entry );
-            }
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapKernelL( CMemSpyEngineChunkList& aList )
-    {
-    SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapKernelL() - START" ) );
-
-    CMemSpyEngine& engine = Engine();
-    CMemSpyEngineHelperSysMemTrackerEntryHeap* entry = CMemSpyEngineHelperSysMemTrackerEntryHeap::NewKernelLC( iTracker );
-    AddItemAndPopL( entry );
-
-    // Remove utilised entries
-    aList.RemoveByHandle( (TAny*) entry->Handle() );
-
-    SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHeapKernelL() - END" ) );
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsChunkLocalL( CMemSpyEngineChunkList& aList )
-    {
-    SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsChunkL() - START" ) );
-
-    const TInt chunkCount = aList.Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = aList.At( i ).Info();
-        SYSMEMTRACKERLOG_PRINTF( RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsChunkLocalL() - info[%03d]: type: %d, pid: 0x%04x, size: %d, name: %S"), i, info.iType, info.iOwnerId, info.iSize, &info.iName ) );
-        //
-        if  ( info.iType == EMemSpyDriverChunkTypeLocal )
-            {
-            // Try to find corresponding process
-            const TInt processIndex = Engine().Container().ProcessIndexById( info.iOwnerId );
-            SYSMEMTRACKERLOG_PRINTF( RDebug::Print( _L("CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsChunkLocalL() - processIndex: %d"), processIndex ) );
-            //
-            if  ( processIndex >= 0 )
-                {
-                CMemSpyProcess& process = Engine().Container().At( processIndex );
-                //
-                TRAP_IGNORE(
-                    CMemSpyEngineHelperSysMemTrackerEntryChunk* entry = CMemSpyEngineHelperSysMemTrackerEntryChunk::NewLC( iTracker, info, process );
-                    AddItemAndPopL( entry );
-                    );
-                //
-                aList.Remove( i );
-                }
-            }
-        }
-
-    SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsChunkL() - END" ) );
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsChunkGlobalL( CMemSpyEngineChunkList& aList )
-    {
-    const TInt chunkCount = aList.Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = aList.At( i ).Info();
-        if  ( info.iType == EMemSpyDriverChunkTypeGlobal )
-            {
-            if  ( CMemSpyEngineHelperFbServ::IsSharedBitmapChunk( info ) || CMemSpyEngineHelperFbServ::IsLargeBitmapChunk( info ) )
-                {
-                // Don't process these two yet, they'll be handled by the bitmap code
-                }
-            else
-                {
-                TRAP_IGNORE(
-                    CMemSpyEngineHelperSysMemTrackerEntryChunk* entry = CMemSpyEngineHelperSysMemTrackerEntryChunk::NewLC( iTracker, info );
-                    AddItemAndPopL( entry );
-                    );
-
-                // Remove processed item
-                aList.Remove( i );
-                }
-            }
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemRamDriveL( CMemSpyEngineChunkList& aList )
-    {
-    const TInt chunkCount = aList.Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = aList.At( i ).Info();
-        if  ( info.iType == EMemSpyDriverChunkTypeRamDrive )
-            {
-            TRAP_IGNORE(
-                CMemSpyEngineHelperSysMemTrackerEntryRamDrive* entry = CMemSpyEngineHelperSysMemTrackerEntryRamDrive::NewLC( iTracker, info );
-                AddItemAndPopL( entry );
-                );
-
-            // Remove processed item
-            aList.Remove( i );
-            }
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsStacksL( CMemSpyEngineChunkList& aList )
-    {
-    CMemSpyEngine& engine = Engine();
-    CMemSpyEngineObjectContainer& container = engine.Container();
-    //
-    const TInt procCount = container.Count();
-    for( TInt p=0; p<procCount; p++ )
-        {
-        CMemSpyProcess& process = container.At( p );
-
-        // We've now sized the user-mode stacks for the process.
-        // Try to locate the stack/data chunk
-        const TInt index = aList.ItemIndexByProcessId( process.Id(), EMemSpyDriverChunkTypeStackAndProcessGlobalData );
-        if  ( index >= 0 )
-            {
-            const TMemSpyDriverChunkInfo& stackChunkInfo = aList.At( index ).Info();
-            //
-            const TInt threadCount = process.Count();
-            for( TInt t=0; t<threadCount; t++ )
-                {
-                CMemSpyThread& thread = process.At( t );
-                //
-                if  ( !thread.IsDead() )
-                    {
-                    TRAP_IGNORE( CreateSeedItemsStacksL( thread, stackChunkInfo ) );
-                    }
-                }
-            }
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsStacksL( CMemSpyThread& aThread, const TMemSpyDriverChunkInfo& aStackChunkInfo )
-    {
-    RThread rThread;
-    if  ( aThread.Open( rThread ) == KErrNone )
-        {
-        CleanupClosePushL( rThread );
-
-        TThreadStackInfo stackInfo;
-        if  ( rThread.StackInfo( stackInfo ) == KErrNone )
-            {
-            CMemSpyEngineHelperSysMemTrackerEntryStack* entry = CMemSpyEngineHelperSysMemTrackerEntryStack::NewLC( iTracker, aThread, aStackChunkInfo, stackInfo );
-            AddItemAndPopL( entry );
-            }
-
-        CleanupStack::PopAndDestroy( &rThread );
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsGlobalDataL( CMemSpyEngineChunkList& aList )
-    {
-    CMemSpyEngine& engine = Engine();
-    CMemSpyEngineObjectContainer& container = engine.Container();
-    //
-    const TInt chunkCount = aList.Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = aList.At( i ).Info();
-
-        if  ( info.iType == EMemSpyDriverChunkTypeGlobalData || info.iType == EMemSpyDriverChunkTypeStackAndProcessGlobalData )
-            {
-            // Need to get associated process
-            const TInt processIndex = container.ProcessIndexById( info.iOwnerId );
-            if  ( processIndex >= 0 )
-                {
-                CMemSpyProcess& process = container.At( processIndex );
-                //
-                if  ( info.iType == EMemSpyDriverChunkTypeGlobalData )
-                    {
-                    if ( !( i % 10 ) ) // Print the message on only every 10th cycle
-                        {
-                        RDebug::Print( KMemSpyKeepaliveMessage  );
-                        }
-                    // Pure global data, unique chunk
-                    TRAP_IGNORE( 
-                        CMemSpyEngineHelperSysMemTrackerGlobalData* entry = CMemSpyEngineHelperSysMemTrackerGlobalData::NewLC( iTracker, process, info );
-                        AddItemAndPopL( entry );
-                        );
-
-                    // Remove processed item
-                    aList.Remove( i );
-                    }
-                else if ( info.iType == EMemSpyDriverChunkTypeStackAndProcessGlobalData )
-                    {
-                    if ( !( i % 10 ) ) // Print the message on only every 10th cycle
-                        {
-                        RDebug::Print( KMemSpyKeepaliveMessage  );
-                        }
-                    // We don't check uniqueness as any stack entries share a common handle with the process
-                    // global data.
-                    TRAP_IGNORE( 
-                        CMemSpyEngineHelperSysMemTrackerGlobalData* entry = CMemSpyEngineHelperSysMemTrackerGlobalData::NewLC( iTracker, process, info );
-                        AddItemAndPopL( entry );
-                        );
-
-                    // Remove processed item
-                    aList.Remove( i );
-                    }
-                }
-            }
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsCodeL()
-    {
-    CMemSpyEngineCodeSegList* code = Engine().HelperCodeSegment().CodeSegmentListRamLoadedL();
-    CleanupStack::PushL( code );
-    //
-    const TInt count = code->Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        const CMemSpyEngineCodeSegEntry& info = code->At( i );
-        //
-        TRAP_IGNORE( 
-            CMemSpyEngineHelperSysMemTrackerEntryCode* entry = CMemSpyEngineHelperSysMemTrackerEntryCode::NewLC( iTracker, info );
-            AddItemAndPopL( entry );
-            );
-        }
-    //
-    CleanupStack::PopAndDestroy( code );
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsHandlesL()
-    {
-    CMemSpyEngineGenericKernelObjectContainer* allContainers = Engine().HelperKernelContainers().ObjectsAllLightweightL();
-    CleanupStack::PushL( allContainers );
-    //
-    const TInt count = allContainers->Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        const CMemSpyEngineGenericKernelObjectList& list = allContainers->At( i );
-        //
-        const TInt entryCount = list.Count();
-        for( TInt j=0; j<entryCount; j++ )
-            {
-            TAny* handle = list.HandleAt( j );
-            CMemSpyEngineHelperSysMemTrackerEntry* entry = NULL;
-            //
-            TRAP_IGNORE( 
-                if  ( list.Type() == EMemSpyDriverContainerTypePropertyRef )
-                    {
-                    entry = CMemSpyEngineHelperSysMemTrackerEntryHandlePAndS::NewLC( iTracker, handle );
-                    }
-                else
-                    {
-                    entry = CMemSpyEngineHelperSysMemTrackerEntryHandleGeneric::NewLC( iTracker, handle, list.Type() );
-                    }
-
-                AddItemAndPopL( entry );
-                );
-            }
-        }
-    //
-    CleanupStack::PopAndDestroy( allContainers );
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsOpenFilesL()
-    {
-    CMemSpyEngineOpenFileList* list = Engine().HelperFileSystem().ListOpenFilesLC();
-    //
-    const TInt threadCount = list->Count();
-    for( TInt t=0; t<threadCount; t++ )
-        {
-        const CMemSpyEngineOpenFileListForThread& thread = list->At( t );
-        //
-        const TInt entryCount = thread.Count();
-        for( TInt e=0; e<entryCount; e++ )
-            {
-            const CMemSpyEngineOpenFileListEntry& fileEntry = thread.At( e );
-            //
-            TRAP_IGNORE( 
-                CMemSpyEngineHelperSysMemTrackerEntryOpenFile* entry = CMemSpyEngineHelperSysMemTrackerEntryOpenFile::NewLC( iTracker, thread, fileEntry );
-                AddItemAndPopL( entry );
-                );
-            }
-        }
-    //
-    CleanupStack::PopAndDestroy( list );
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsDiskSpaceL()
-    {
-    TDriveList list;
-    //
-    RFs& fsSession = Engine().FsSession();
-    if  ( fsSession.DriveList( list ) == KErrNone )
-        {
-        TDriveInfo info;
-        //
-        for( TInt i=0; i<KMaxDrives; i++ )
-            {
-            if  ( list[ i ] != KDriveAbsent )
-                {
-                if  ( fsSession.Drive( info, i ) == KErrNone )
-                    {
-                    TRAP_IGNORE( 
-                        CMemSpyEngineHelperSysMemTrackerEntryDiskSpace* entry = CMemSpyEngineHelperSysMemTrackerEntryDiskSpace::NewLC( iTracker, static_cast<TDriveNumber>( i ) );
-                        AddItemAndPopL( entry );
-                        );
-                    }
-                }
-            }
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsSystemMemoryL()
-    {
-    TRAP_IGNORE( 
-        CMemSpyEngineHelperSysMemTrackerEntrySystemMemory* entryT = CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::NewLC( iTracker, ETypeTotal );
-        AddItemAndPopL( entryT );
-        );
-    TRAP_IGNORE( 
-        CMemSpyEngineHelperSysMemTrackerEntrySystemMemory* entryF = CMemSpyEngineHelperSysMemTrackerEntrySystemMemory::NewLC( iTracker, ETypeFree );
-        AddItemAndPopL( entryF );
-        );
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsBitmapL( CMemSpyEngineChunkList& aList )
-    {
-    TInt bitmapConCount = 0;
-    TInt fontConCount = 0;
-    //
-    RArray<TInt> handles;
-    CleanupClosePushL( handles );
-    Engine().HelperFbServ().GetArrayOfBitmapHandlesL( handles, bitmapConCount, fontConCount );
-    //
-    const TInt count = handles.Count();
-    for( TInt i=0; i<count; i++ )
-        {
-        const TInt handle = handles[ i ];
-        //
-        TRAP_IGNORE( 
-            CMemSpyEngineHelperSysMemTrackerEntryBitmap* entry = CMemSpyEngineHelperSysMemTrackerEntryBitmap::NewLC( iTracker, handle );
-            AddItemAndPopL( entry );
-            );
-        }
-    //
-    CleanupStack::PopAndDestroy( &handles );
-    
-    // Make overall fbserv info item
-    TMemSpyDriverChunkInfo infoChunkLarge;
-    TMemSpyDriverChunkInfo infoChunkShared;
-    //
-    const TInt chunkCount = aList.Count();
-    for( TInt i=chunkCount-1; i>=0; i-- )
-        {
-        const TMemSpyDriverChunkInfo& info = aList.At( i ).Info();
-        if  ( CMemSpyEngineHelperFbServ::IsSharedBitmapChunk( info ) )
-            {
-            SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsBitmapL() - found FbsSharedChunk..." ) );
-            infoChunkShared = info;
-            aList.Remove( i );
-            }
-        else if ( CMemSpyEngineHelperFbServ::IsLargeBitmapChunk( info ) )
-            {
-            SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsBitmapL() - found FbsLargeChunk..." ) );
-            infoChunkLarge = info;
-            aList.Remove( i );
-            }
-        }
-
-    TRAP_IGNORE( 
-        CMemSpyEngineHelperSysMemTrackerEntryFbserv* entry = CMemSpyEngineHelperSysMemTrackerEntryFbserv::NewLC( iTracker, infoChunkLarge, infoChunkShared, bitmapConCount, fontConCount, count );
-        AddItemAndPopL( entry );
-        );
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsFileServerCacheL( CMemSpyEngineChunkList& aList )
-    {
-    TInt index = KErrNotFound;
-    const CMemSpyEngineChunkEntry* entry = Engine().HelperFileSystem().IdentifyCacheChunk( aList, index );
-    //
-    if  ( entry )
-        {
-        const TMemSpyDriverChunkInfo& info = entry->Info();
-        SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsFileServerCacheL() - found F32 cache chunk..." ) );
-        //
-        TRAP_IGNORE( 
-            CMemSpyEngineHelperSysMemTrackerEntryFileServerCache* entry = CMemSpyEngineHelperSysMemTrackerEntryFileServerCache::NewLC( iTracker, info );
-            AddItemAndPopL( entry );
-        );
-        //
-        aList.Remove( index );
-        }
-    }
-
-
-void CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsWindowServerL()
-    {
-    if ( Engine().IsHelperWindowServerSupported() )
-        {
-        MMemSpyEngineHelperWindowServer& windowServerManager = Engine().HelperWindowServer();
-        MMemSpyEngineWindowGroupList* windowGroupList = windowServerManager.WindowGroupListL();
-        CleanupDeletePushL( windowGroupList );
-        TInt count = windowGroupList->Count();
-        TBool isFocused( EFalse );
-        for ( TInt i = 0; i < count; i++ )
-            {
-            TMemSpyEngineWindowGroupDetails windowGroupDetails;
-            windowServerManager.GetWindowGroupDetailsL( windowGroupList->At( i ).iId, windowGroupDetails );
-            windowGroupDetails.iOrdinalPosition = windowGroupList->At( i ).iOrdinalPosition;
-            if ( !isFocused && windowGroupDetails.iPriority == 0 )
-                {
-                windowGroupDetails.iIsFocused = ETrue;
-                isFocused = ETrue;
-                }
-            else
-                {
-                windowGroupDetails.iIsFocused = EFalse;
-                }
-            TRAP_IGNORE( 
-                CMemSpyEngineHelperSysMemTrackerEntryWindowServer* entry = CMemSpyEngineHelperSysMemTrackerEntryWindowServer::NewLC( iTracker, windowGroupDetails );
-                AddItemAndPopL( entry );
-                );
-            }
-        CleanupStack::PopAndDestroy( windowGroupList );
-        }
-    else
-        {
-        SYSMEMTRACKERLOG_PRINTF( RDebug::Printf( "CMemSpyEngineHelperSysMemTrackerEntryManager::CreateSeedItemsWindowServerL() - Not supported" ) );
-        }
-    }
-
-
-
-