--- a/mtpfws/mtpfw/dataproviders/proxydp/src/cmtpdeleteobject.cpp Wed Apr 14 16:49:36 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/proxydp/src/cmtpdeleteobject.cpp Tue Apr 27 17:30:23 2010 +0300
@@ -19,6 +19,7 @@
#include <mtp/mtpprotocolconstants.h>
#include <mtp/tmtptyperequest.h>
#include <mtp/cmtptypearray.h>
+#include <mtp/mtpdataproviderapitypes.h>
#include "cmtpdataprovider.h"
#include "cmtpdataprovidercontroller.h"
@@ -98,10 +99,6 @@
{
__FLOG(_L8("CheckRequestL - Entry"));
TMTPResponseCode responseCode = CMTPRequestProcessor::CheckRequestL();
- if ((EMTPRespCodeOK == responseCode) && (iSingletons.DpController().EnumerateState() == CMTPDataProviderController::EEnumeratingSubDirFiles))
- {
- responseCode = EMTPRespCodeDeviceBusy;
- }
__FLOG_VA((_L8("CheckRequestL - Exit with responseCode = 0x%04X"), responseCode));
return responseCode;
@@ -119,6 +116,27 @@
router.ParseOperationRequestL(params);
router.RouteOperationRequestL(params, iTargetDps);
+ if (iSingletons.DpController().EnumerateState() == CMTPDataProviderController::EEnumeratingSubDirFiles)
+ {
+ TBool hasBaseFileSystemDp = EFalse;
+ for(TInt i=0; i<iTargetDps.Count(); i++)
+ {
+ CMTPDataProvider& dp = iSingletons.DpController().DataProviderL( iTargetDps[i] );
+ if(dp.SupportedCodes(EStorageSystemTypes).Find(CMTPStorageMetaData::ESystemTypeDefaultFileSystem) != KErrNotFound)
+ {
+ hasBaseFileSystemDp = ETrue;
+ break;
+ }
+ }
+
+ if(hasBaseFileSystemDp)
+ {
+ SendResponseL(EMTPRespCodeDeviceBusy);
+ __FLOG( _L8("-ServiceL with Device_Busy") );
+ return;
+ }
+ }
+
BrowseHandlesL();
__FLOG( _L8("-ServiceL") );