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