示例#1
0
void CVwsSession::RequestClientActivationL(MVwsSessionObserver& aObserver,const TVwsViewId& aViewId,
										   const TVwsViewId& aPreviousViewId,CVwsClientMessage* aClientMessage,RThread aThreadOfClientInitiatingViewSwitch)
	{
	User::LeaveIfError(aThreadOfClientInitiatingViewSwitch.Duplicate(RThread()));
	CleanupClosePushL(aThreadOfClientInitiatingViewSwitch);
	CVwsSessionEvent* activationEvent=new(ELeave) CVwsSessionEvent_Activation(*this,*iEventQueue,aObserver,aViewId,aPreviousViewId,aClientMessage,aThreadOfClientInitiatingViewSwitch);
	aObserver.NowObserving(activationEvent);
	CleanupStack::Pop(&aThreadOfClientInitiatingViewSwitch);
	TRAPD(err, iEventQueue->ProcessEventL(activationEvent))
	if(err!=KErrNone)
		{
		iLeaveAfterOwnershipTaken=ETrue;
		User::Leave(err);
		};
	}