memspy/Engine/Source/Helpers/MemSpyEngineHelperStack.cpp
branchRCL_3
changeset 59 8ad140f3dd41
parent 49 7fdc9a71d314
--- a/memspy/Engine/Source/Helpers/MemSpyEngineHelperStack.cpp	Wed Sep 15 13:53:27 2010 +0300
+++ b/memspy/Engine/Source/Helpers/MemSpyEngineHelperStack.cpp	Wed Oct 13 16:17:58 2010 +0300
@@ -250,22 +250,36 @@
 
         if  ( r == KErrNone )
             {
-            while ( r == KErrNone )
-                {
-                iEngine.Sink().OutputBinaryDataL( KStackDataPrefix, pData.Ptr(), (const TUint8*) info.iUserStackBase, pData.Length() );
-                //
-                if  ( remaining > 0 )
+            if ( aType == EMemSpyDriverDomainUser ) {
+                while ( r == KErrNone )
                     {
-                    info.iUserStackBase += pData.Length();
-                    r = iEngine.Driver().GetStackDataNext( aThread.Id(), pData, remaining, aType, aEntireStack );
+                    iEngine.Sink().OutputBinaryDataL( KStackDataPrefix, pData.Ptr(), (const TUint8*) info.iUserStackBase, pData.Length() );
+                    //
+                    if  ( remaining > 0 )
+                        {
+                        info.iUserStackBase += pData.Length();
+                        r = iEngine.Driver().GetStackDataNext( aThread.Id(), pData, remaining, aType, aEntireStack );
+                        }
+                    else
+                        {
+                        break;
+                        }
                     }
-                else
-                    {
-                    break;
+            }
+            else if ( aType == EMemSpyDriverDomainKernel ) {
+                while ( r == KErrNone ) {
+                
+                    iEngine.Sink().OutputBinaryDataL( KStackDataPrefix, pData.Ptr(), (const TUint8*) info.iSupervisorStackBase, pData.Length() );
+                    //
+                    if  ( remaining > 0 ) {
+                        info.iSupervisorStackBase += pData.Length();
+                        r = iEngine.Driver().GetStackDataNext( aThread.Id(), pData, remaining, aType, aEntireStack );
                     }
-                }
+                    else {
+                         break;
+                    }
+               }
             }
-
         }
     CleanupStack::PopAndDestroy( data );
 
@@ -276,6 +290,7 @@
     iEngine.Sink().OutputLineFormattedL( KMemSpyMarkerStackData, &KMemSpySinkTagClose, (TUint) aThread.Id() );
     iEngine.Sink().DataStreamEndL();
     }
+}    
 
 
 EXPORT_C void CMemSpyEngineHelperStack::OutputStackInfoForDeviceL()