Просмотр исходного кода

resource: infer file type from source index

Daniele Bartolini 5 лет назад
Родитель
Сommit
418c63b5b9
2 измененных файлов с 14 добавлено и 4 удалено
  1. 13 4
      src/resource/data_compiler.cpp
  2. 1 0
      src/resource/data_compiler.h

+ 13 - 4
src/resource/data_compiler.cpp

@@ -665,6 +665,18 @@ void DataCompiler::remove_tree(const char* path)
 	notify_remove_tree(path);
 }
 
+void DataCompiler::remove_file_or_tree(const char* path)
+{
+	TempAllocator512 ta;
+	DynamicString path_str(ta);
+	path_str = path;
+
+	if (hash_map::has(_source_index._paths, path_str))
+		remove_file(path);
+	else
+		remove_tree(path);
+}
+
 void DataCompiler::map_source_dir(const char* name, const char* source_dir)
 {
 	TempAllocator256 ta;
@@ -1152,10 +1164,7 @@ void DataCompiler::file_monitor_callback(FileMonitorEvent::Enum fme, bool is_dir
 			break;
 
 		case FileMonitorEvent::DELETED:
-			if (!is_dir)
-				remove_file(resource_name.c_str());
-			else
-				remove_tree(resource_name.c_str());
+			remove_file_or_tree(resource_name.c_str());
 			break;
 
 		case FileMonitorEvent::RENAMED:

+ 1 - 0
src/resource/data_compiler.h

@@ -70,6 +70,7 @@ struct DataCompiler
 	void remove_file(const char* path);
 	void add_tree(const char* path);
 	void remove_tree(const char* path);
+	void remove_file_or_tree(const char* path);
 
 	void file_monitor_callback(FileMonitorEvent::Enum fme, bool is_dir, const char* path, const char* path_renamed);
 	static void file_monitor_callback(void* thiz, FileMonitorEvent::Enum fme, bool is_dir, const char* path_original, const char* path_modified);