diff -r 3f0ddfac3ede -r f429a0a2075b mmplugins/lib3gp/impl/src/file.cpp --- a/mmplugins/lib3gp/impl/src/file.cpp Thu Jul 15 20:22:56 2010 +0300 +++ b/mmplugins/lib3gp/impl/src/file.cpp Thu Aug 19 11:23:35 2010 +0300 @@ -1388,26 +1388,54 @@ TFileName path; TInt error; - // Create a directory for the files - if ( handle->fileName ) - { - filename = (TText *)handle->fileName; + TDriveList driveList; + TBool pathSet = EFalse; + + // As ram drive access is faster, try to set temp file directory to available ram drive. + if (((RFs *)(handle->fs))->DriveList(driveList) == KErrNone) + { + for ( TInt i = 0; i < driveList.Length(); i++ ) + { + TDriveInfo driveInfo; + if (((RFs *)(handle->fs))->Drive(driveInfo, i) == KErrNone) + { + if (driveInfo.iType == EMediaRam) + { + TChar driveLetter; + ((RFs *)(handle->fs))->DriveToChar(i, driveLetter); + path.Append(driveLetter); + path.Append(_L(":")); + path.Append(KTmpDirectoryName); + pathSet = ETrue; + break; + } + } + } + } + + // If no ram drive was found create a directory for the files on current drive + if (!pathSet) + { + if ( handle->fileName ) + { + filename = (TText *)handle->fileName; - TParse fp; - path = KTmpDirectoryName; - if (((RFs *)(handle->fs))->Parse(filename, fp) != KErrNone) - return -1; - path.Insert(0, fp.Drive()); - } - else - { - TChar drive; - if (((RFs *)(handle->fs))->DriveToChar(handle->fileHandleDrive, drive ) != KErrNone ) - return -1; - path.Append( drive ); - path.Append( _L(":") ); - path.Append( KTmpDirectoryName ); - } + TParse fp; + path = KTmpDirectoryName; + if (((RFs *)(handle->fs))->Parse(filename, fp) != KErrNone) + return -1; + path.Insert(0, fp.Drive()); + } + else + { + TChar drive; + if (((RFs *)(handle->fs))->DriveToChar(handle->fileHandleDrive, drive ) != KErrNone ) + return -1; + path.Append( drive ); + path.Append( _L(":") ); + path.Append( KTmpDirectoryName ); + } + } // Try to delete the temp folder from leftovers // If other instance is using it then delete will just fail