uiacceltk/hitchcock/coretoolkit/src/huigifanimationtexture.cpp
branchRCL_3
changeset 6 10534483575f
parent 3 d8a3531bc6b8
child 8 46927d61fef3
--- a/uiacceltk/hitchcock/coretoolkit/src/huigifanimationtexture.cpp	Fri Mar 12 15:47:04 2010 +0200
+++ b/uiacceltk/hitchcock/coretoolkit/src/huigifanimationtexture.cpp	Mon Mar 15 12:43:37 2010 +0200
@@ -174,7 +174,8 @@
     iFrameInterval(-1),
     iFrameCount(0),
     iFlags(aFlags),
-    iId(aId)
+    iId(aId),
+    iOriginalFileInUse(EFalse)
     {
     }
 
@@ -203,11 +204,16 @@
     TChar drive;
     User::LeaveIfError( DriveInfo::GetDefaultDrive(DriveInfo::EDefaultRam, drive ) );
         
-    iFilename = HBufC::NewL(parse.NameAndExt().Size() + 4);
+    // 32 extra for textureid and 4 for "temp"
+    iFilename = HBufC::NewL(parse.NameAndExt().Size() + 4 + 32+ 4);
     TPtr ptr = iFilename->Des();
     
     ptr.Append(drive);
-    ptr.Append(_L(":\\"));
+    ptr.Append(_L(":\\temp"));
+    // with the texture id:s the
+    // name should be "unique"
+    ptr.AppendNum(iTextureId1);
+    ptr.AppendNum(iTextureId2);
     ptr.Append(parse.NameAndExt());
     
     RFs fs;
@@ -220,10 +226,11 @@
     CleanupStack::PopAndDestroy();
     
     if(err != KErrNone)
-	{
-	delete iFilename;    
-    iFilename = aFilename.AllocL();
-	}
+    	{
+	    iOriginalFileInUse = ETrue;
+	    delete iFilename;    
+        iFilename = aFilename.AllocL();
+	    }
     
     
     iTexture1 = &iManager.LoadTextureL(
@@ -246,18 +253,22 @@
 
     iTexture = 0;    
     
-    RFs fs;
-    TInt err = fs.Connect();
-    if(err == KErrNone)    
+    // Don't delete the file if the original
+    // file was in use instead of the RAM copy
+    if (!iOriginalFileInUse)
         {
-        CFileMan* fileman = 0;
-        TRAP(err, fileman = CFileMan::NewL(fs));
-        if(err == KErrNone)
+        RFs fs;
+        TInt err = fs.Connect();
+        if(err == KErrNone)    
             {
-            fileman->Delete(iFilename->Des());
+            CFileMan* fileman = 0;
+            TRAP(err, fileman = CFileMan::NewL(fs));
+            if(err == KErrNone)
+                {
+                fileman->Delete(iFilename->Des());
+                }
             }
         }
-    
 
     delete iFilename;
     }