libraries/btrace_parser/src/btrace_appresponse.cpp
changeset 78 b3ffff030d5c
parent 0 7f656887cf89
--- a/libraries/btrace_parser/src/btrace_appresponse.cpp	Tue Oct 26 15:36:30 2010 +0100
+++ b/libraries/btrace_parser/src/btrace_appresponse.cpp	Thu Oct 28 16:54:54 2010 +0100
@@ -18,17 +18,17 @@
 // CBtraceAppResponse
 //
 
-EXPORT_C CBtraceAppResponse* CBtraceAppResponse::NewL(CBtraceReader& aReader)
+EXPORT_C CBtraceAppResponse* CBtraceAppResponse::NewL(CBtraceReader& aReader, CBtraceContext& aContext)
 	{
-	CBtraceAppResponse* self = new (ELeave) CBtraceAppResponse(aReader);
+	CBtraceAppResponse* self = new (ELeave) CBtraceAppResponse(aReader, aContext);
 	CleanupStack::PushL(self);
 	self->ConstructL();
 	CleanupStack::Pop(self);
 	return self;
 	}
 
-CBtraceAppResponse::CBtraceAppResponse(CBtraceReader& aReader)
-	: iReader(aReader)
+CBtraceAppResponse::CBtraceAppResponse(CBtraceReader& aReader, CBtraceContext& aContext)
+	: iReader(aReader), iContext(aContext)
 	{
 	}
 
@@ -53,14 +53,13 @@
 			{
 			const TUint32* data = reinterpret_cast<const TUint32*>(aFrame.iData.Ptr());
 			const TAmTraceEventEvCapture event = static_cast<TAmTraceEventEvCapture>(*data++);
-			const TUint32 processIdLowWord = *data++;
-			const TUint32 processIdHighWord = *data++;
 
 			switch (event)
 				{
-				case EAmTraceEventEvCaptureSystemAppResponse:
+				case EAmTraceEventEvCaptureAppResponse:
 					{
-					SeenAppResponseL(aFrame.iTickCount, MAKE_TUINT64(processIdHighWord, processIdLowWord));
+					const TInt32 wgId = *data++;
+					SeenAppResponseL(aFrame.iTickCount, wgId);
 					}
 				break;
 				
@@ -77,32 +76,36 @@
 		};
 	}
 
-void CBtraceAppResponse::SeenAppResponseL(const TBtraceTickCount& aTickCount, const TProcessId& aProcessId)
+void CBtraceAppResponse::SeenAppResponseL(const TBtraceTickCount& aTickCount, TInt aWindowGroupId)
 	{
-	TInt ii = iNotifs.Count();
-	while (--ii >= 0)
+	const TBtraceWindowGroupId* btraceWgId = iContext.FindWindowGroup(aWindowGroupId);
+	if (btraceWgId)
 		{
-		TAppResponseNotif& nt = iNotifs[ii];
-		if (nt.iProcessId == aProcessId)
+		TInt ii = iNotifs.Count();
+		while (--ii >= 0)
 			{
-			MBtraceAppResponseObserver& observer = nt.iObserver;
-			if (nt.iPersistence == ENotificationOneShot)
+			TAppResponseNotif& nt = iNotifs[ii];
+			if (iContext.WindowGroupName(*btraceWgId).MatchF(nt.iWindowGroupNamePattern) != KErrNotFound)
 				{
-				iNotifs.Remove(ii);
+				MBtraceAppResponseObserver& observer = nt.iObserver;
+				if (nt.iPersistence == ENotificationOneShot)
+					{
+					iNotifs.Remove(ii);
+					}
+				observer.HandleAppResponseSeenL(aTickCount);
 				}
-			observer.HandleAppResponseSeenL(aTickCount);
 			}
-		}	
+		}
 	}
 
-EXPORT_C void CBtraceAppResponse::NotifyAppResponseL(MBtraceAppResponseObserver& aObserver, const TProcessId& aProcessId)
+EXPORT_C void CBtraceAppResponse::NotifyAppResponseL(MBtraceAppResponseObserver& aObserver, const TDesC& aWindowGroupNamePattern)
 	{
-	NotifyAppResponseL(aObserver, aProcessId, ENotificationOneShot);
+	NotifyAppResponseL(aObserver, aWindowGroupNamePattern, ENotificationOneShot);
 	}
 
-EXPORT_C void CBtraceAppResponse::NotifyAppResponseL(MBtraceAppResponseObserver& aObserver, const TProcessId& aProcessId, TBtraceNotificationPersistence aPersistence)
+EXPORT_C void CBtraceAppResponse::NotifyAppResponseL(MBtraceAppResponseObserver& aObserver, const TDesC& aWindowGroupNamePattern, TBtraceNotificationPersistence aPersistence)
 	{
-	TAppResponseNotif notify(aObserver, aProcessId, aPersistence);
+	TAppResponseNotif notify(aObserver, aWindowGroupNamePattern, aPersistence);
 	User::LeaveIfError(iNotifs.Append(notify));
 	}
 
@@ -122,7 +125,7 @@
 // CBtraceAppResponse::TAppResponseNotif
 //
 
-CBtraceAppResponse::TAppResponseNotif::TAppResponseNotif(MBtraceAppResponseObserver& aObserver, const TProcessId& aProcessId, TBtraceNotificationPersistence aPersistence)
-	: iObserver(aObserver), iProcessId(aProcessId), iPersistence(aPersistence)
+CBtraceAppResponse::TAppResponseNotif::TAppResponseNotif(MBtraceAppResponseObserver& aObserver, const TDesC& aWindowGroupNamePattern, TBtraceNotificationPersistence aPersistence)
+	: iObserver(aObserver), iWindowGroupNamePattern(aWindowGroupNamePattern), iPersistence(aPersistence)
 	{
 	}