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); }; }