diff -r dbfb5e38438b -r 305818acdca4 taskswitcher/server/src/tsdataobservertask.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/taskswitcher/server/src/tsdataobservertask.cpp Mon Sep 13 13:26:33 2010 +0300 @@ -0,0 +1,67 @@ +/* +* 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 "tsdataobservertask.h" +#include "tstaskmonitorglobals.h" +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CTsDataObserverTask::CTsDataObserverTask( MTsDataObserverStorage& aStorage, + const RMessage2& aMsg ) +: + iStorage( aStorage ), + iMsg( aMsg ) + { + // No implementation required + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CTsDataObserverTask::~CTsDataObserverTask() + { + if( EFalse == iMsg.IsNull() ) + { + iMsg.Complete( iDataChanged ? KErrNone : KErrCancel ); + } + } +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CTsDataObserverTask::ExecuteLD( MTsDataObserverStorage& aStorage, + const RMessage2& aMsg ) + { + CTsDataObserver *self = new (ELeave)CTsDataObserverTask( aStorage, aMsg ); + CleanupStack::PushL( self ); + aStorage.PushL( self ); + CleanupStack::Pop( self ); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CTsDataObserverTask::DataChanged() + { + iDataChanged = ETrue; + iStorage.Pop( this ); + delete this; + }