diff -r a117e284a2c6 -r b09186059647 omadrm/drmengine/dcfrepository/server/src/FileScan.cpp --- a/omadrm/drmengine/dcfrepository/server/src/FileScan.cpp Tue Sep 28 14:08:58 2010 +0300 +++ b/omadrm/drmengine/dcfrepository/server/src/FileScan.cpp Thu Oct 14 13:45:23 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-2010 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" @@ -121,6 +121,8 @@ void CFileScan::ConstructL() { TInt err = 0; + CActiveScheduler::Add( this ); + if ( !iFs ) { err = KErrArgument; @@ -150,6 +152,7 @@ // Destructor CFileScan::~CFileScan() { + Deque(); CleanInternal(); iServer = NULL; iFs = NULL; @@ -196,8 +199,8 @@ // void CFileScan::RunL() { - TInt err = KErrNone; - if ( iSearching && iServer->State()!=EStateIdle ) + TInt err (iStatus.Int()); + if ( !err && iSearching && iServer->State()!=EStateIdle ) { err = SearchNext(); if ( err == KErrCancel ) @@ -206,22 +209,29 @@ } if ( !err ) { - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete( status , err ); + if (iServer->State() != EStateIdle) + { + if (iSearching) + { + SetActive(); + TRequestStatus* status = &iStatus; + User::RequestComplete(status, err); + } + else + { + iServer->CompleteScanning(err); + } + } + else + { + CleanInternal(); + } } } - else - { - CleanInternal(); - iServer->CompleteScanning(err); - Deque(); - } if ( err ) { CleanInternal(); iServer->CompleteScanning(err); - Deque(); } } @@ -237,18 +247,19 @@ { TInt err = KErrNone; - iServer = aServer; - CActiveScheduler::Add( this ); + if ( IsActive() ) + { + err=KErrServerBusy; + } - iSearching = ETrue; - err = SearchNext(); - if ( err ) + if ( !err ) { - return err; + iServer = aServer; + iSearching = ETrue; + SetActive(); + TRequestStatus* status = &iStatus; + User::RequestComplete( status , KErrNone ); } - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete( status , KErrNone ); return err; }