diff -r f429a0a2075b -r 735348f59235 mmplugins/lib3gp/impl/src/file.cpp --- a/mmplugins/lib3gp/impl/src/file.cpp Thu Aug 19 11:23:35 2010 +0300 +++ b/mmplugins/lib3gp/impl/src/file.cpp Tue Aug 31 16:43:06 2010 +0300 @@ -185,77 +185,9 @@ return -1; } - TBuf8<16> buf; - buf.Copy(fp.Drive()); - buf.LowerCase(); - TInt drvNum = (*buf.Ptr()) - 'a'; - PRINT((_L("drvNum = %d"), drvNum)); - - TVolumeInfo volInfo; - error = fs->Volume(volInfo, drvNum); - if (error != KErrNone) - { - return -1; - } - - PRINT((_L("volInfo.iFree = %Ld"), volInfo.iFree)); - PRINT((_L("volInfo.iSize = %Ld"), volInfo.iSize)); - - TVolumeIOParamInfo ioInfo; - error = fs->VolumeIOParam(drvNum, ioInfo); - if (error != KErrNone) - { - return -1; - } - - PRINT((_L("ioInfo.iBlockSize = %d"), ioInfo.iBlockSize)); - PRINT((_L("ioInfo.iClusterSize = %d"), ioInfo.iClusterSize)); - - if (ioInfo.iClusterSize <= 0 || (ioInfo.iClusterSize & 0x1)) // if for some reason we got wrong value for the cluster - ignore it - { - PRINT(_L("Wrong cluster size, set 0x8000")); - ioInfo.iClusterSize = 0x8000; - } - - // We want to have size of writing buffer to be a multiple of cluster size. Small buffer should be 1 cluster, large buffer should be 8 clusters. - TInt writeBufferSizeSmall = ioInfo.iClusterSize; - TInt writeBufferSizeLarge = ioInfo.iClusterSize * 8; - - // Now need to make sure that writeBufferSizeLarge is not too small (<128K) or too big (>256K) whilst keeping it a multiple of cluster size - if (writeBufferSizeLarge < KFileWriterBufferSizeLarge/2) - { - writeBufferSizeLarge = KFileWriterBufferSizeLarge/2; - } - - if (writeBufferSizeLarge > KFileWriterBufferSizeLarge) - { - writeBufferSizeLarge = (KFileWriterBufferSizeLarge / ioInfo.iClusterSize) * ioInfo.iClusterSize; - } - - if (writeBufferSizeLarge < ioInfo.iClusterSize) - { - writeBufferSizeLarge = ioInfo.iClusterSize; - } - - PRINT((_L("writeBufferSizeLarge = %d"), writeBufferSizeLarge)); - - TInt incSetSize = writeBufferSizeLarge * (KFileWriterHardBufLimit >> 1); // 2Mb if cluster size if 32767 - TInt initSetSize = incSetSize * 1; // set initial set size for 2Mb - - if (initSetSize > volInfo.iFree) - { - initSetSize = (volInfo.iFree / incSetSize) * incSetSize; - } - - PRINT((_L("initSetSize = %d"), initSetSize)); - - PRINT((_L("e_SetSize 1"))); - file->SetSize(initSetSize); - PRINT((_L("e_SetSize 0"))); - handle->file = handle->rfile; - TRAP(error, handle->filewriter = CFileWriter::NewL( *file, initSetSize, writeBufferSizeSmall, writeBufferSizeLarge)); + TRAP(error, handle->filewriter = CFileWriter::NewL( *file )); if ( error != KErrNone ) { return -1; @@ -334,11 +266,7 @@ PRINT((_L("e_closefile_flush_filewriter 1"))); (handle->filewriter)->Flush(KNullDesC8); PRINT((_L("e_closefile_flush_filewriter 0"))); - PRINT((_L("e_SetSize 1"))); - ((RFile64 *)(handle->file))->SetSize((handle->filewriter)->OutputFileSize()); - PRINT((_L("e_SetSize 0: iOutputFileSize = %Ld"), (handle->filewriter)->OutputFileSize())); - - delete handle->filewriter; + delete handle->filewriter; handle->filewriter = NULL; } } @@ -1388,54 +1316,26 @@ TFileName path; TInt error; - 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; + // Create a directory for the files + 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