From 5dfdd2496682a3a21840ba1955d261799c1c361a Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Sun, 30 May 2010 10:41:07 +0000
Subject: [PATCH] remove temp files

---
 Common/CreateFile.cpp | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/Common/CreateFile.cpp b/Common/CreateFile.cpp
index be21f3a1f5..f8a16b916a 100644
--- a/Common/CreateFile.cpp
+++ b/Common/CreateFile.cpp
@@ -10,6 +10,7 @@
 #include "StringUtils.h"
 #include "Context.h"
 #include "Options.h"
+#include "OS.h"
 
 #if defined(HAVE_OPENGL)
 #include "drawContext.h"
@@ -443,12 +444,15 @@ void CreateOutputFile(std::string fileName, int format)
         if(opt_view_visible(i, GMSH_GET, 0))
           numSteps = std::max(numSteps, (int)opt_view_nb_timestep(i, GMSH_GET, 0));
       }
-      int numFrames = CTX::instance()->post.animCycle ? numViews : numSteps;
-      status_play_manual(!CTX::instance()->post.animCycle, 0);
-      for(int i = 0; i < numFrames; i++){
+      std::vector<std::string> frames;
+      for(int i = 0; i < (CTX::instance()->post.animCycle ? numViews : numSteps); i++){
         char tmp[256];
-        sprintf(tmp, "%s.gmsh-%03d.ppm", CTX::instance()->homeDir.c_str(), i);
-        CreateOutputFile(tmp, FORMAT_PPM);
+        sprintf(tmp, ".gmsh-%03d.ppm", i);
+        frames.push_back(tmp);
+      }
+      status_play_manual(!CTX::instance()->post.animCycle, 0);
+      for(unsigned int i = 0; i < frames.size(); i++){
+        CreateOutputFile(CTX::instance()->homeDir + frames[i], FORMAT_PPM);
         status_play_manual(!CTX::instance()->post.animCycle, 1);
       }
       int repeat = (int)(CTX::instance()->post.animDelay * 24);
@@ -464,8 +468,8 @@ void CreateOutputFile(std::string fileName, int format)
               "OUTPUT %s\nINPUT_CONVERT *\nINPUT_DIR %s\nINPUT\n",
               pattern.c_str(), repeat, fileName.c_str(), 
               CTX::instance()->homeDir.c_str());
-      for(int i = 0; i < numFrames; i++){
-        fprintf(fp, ".gmsh-%03d.ppm", i);
+      for(unsigned int i = 0; i < frames.size(); i++){
+        fprintf(fp, "%s", frames[i].c_str());
         if(repeat > 1) fprintf(fp, " [1-%d]", repeat);
         fprintf(fp, "\n");
       }
@@ -475,9 +479,14 @@ void CreateOutputFile(std::string fileName, int format)
       char *args[] = {(char*)"gmsh", (char*)parFileName.c_str()};
       try{
         mpeg_encode_main(2, args);
+        UnlinkFile(parFileName);
+        for(unsigned int i = 0; i < frames.size(); i++)
+          UnlinkFile(CTX::instance()->homeDir + frames[i]);
       }
       catch (const char *error){
         Msg::Error("mpeg_encode: %s", error);
+        Msg::Info("Temporary image were saved in: %s.gmsh-*.ppm", 
+                  CTX::instance()->homeDir.c_str());
       }
     }
     break;
-- 
GitLab