瀏覽代碼

remove old egg files from database if they don't exist

David Rose 24 年之前
父節點
當前提交
28028f487d
共有 1 個文件被更改,包括 13 次插入1 次删除
  1. 13 1
      pandatool/src/egg-palettize/palettizer.cxx

+ 13 - 1
pandatool/src/egg-palettize/palettizer.cxx

@@ -614,6 +614,8 @@ generate_images(bool redo_all) {
 bool Palettizer::
 bool Palettizer::
 read_stale_eggs(bool redo_all) {
 read_stale_eggs(bool redo_all) {
   bool okflag = true;
   bool okflag = true;
+  
+  pvector<EggFiles::iterator> invalid_eggs;
 
 
   EggFiles::iterator ei;
   EggFiles::iterator ei;
   for (ei = _egg_files.begin(); ei != _egg_files.end(); ++ei) {
   for (ei = _egg_files.begin(); ei != _egg_files.end(); ++ei) {
@@ -621,7 +623,7 @@ read_stale_eggs(bool redo_all) {
     if (!egg_file->has_data() &&
     if (!egg_file->has_data() &&
         (egg_file->is_stale() || redo_all)) {
         (egg_file->is_stale() || redo_all)) {
       if (!egg_file->read_egg()) {
       if (!egg_file->read_egg()) {
-        okflag = false;
+        invalid_eggs.push_back(ei);
 
 
       } else {
       } else {
         egg_file->scan_textures();
         egg_file->scan_textures();
@@ -630,6 +632,16 @@ read_stale_eggs(bool redo_all) {
     }
     }
   }
   }
 
 
+  // Now eliminate all the invalid egg files.
+  pvector<EggFiles::iterator>::iterator ii;
+  for (ii = invalid_eggs.begin(); ii != invalid_eggs.end(); ++ii) {
+    EggFiles::iterator ei = (*ii);
+    EggFile *egg_file = (*ei).second;
+    cerr << "Removing " << (*ei).first << "\n";
+    egg_file->remove_egg();
+    _egg_files.erase(ei);
+  }
+
   return okflag;
   return okflag;
 }
 }