Przeglądaj źródła

FileWatcher: allow check for pending changes, try reduce cdb overwrite duing sync

Yuxiao Mao 9 miesięcy temu
rodzic
commit
faa3d26619
2 zmienionych plików z 19 dodań i 0 usunięć
  1. 13 0
      hide/tools/FileWatcher.hx
  2. 6 0
      hide/tools/IdeData.hx

+ 13 - 0
hide/tools/FileWatcher.hx

@@ -142,6 +142,19 @@ class FileWatcher {
 		return w.version;
 		return w.version;
 	}
 	}
 
 
+	public function isChangePending( f : FileWatchEvent ) : Bool {
+		var w = watches.get(f.path);
+		if( w != null && w.changed ) {
+			if( f.ignoreCheck != null ) {
+				var sign = getSignature(w.path);
+				if( sign == f.ignoreCheck )
+					return false;
+			}
+			return true;
+		}
+		return false;
+	}
+
 	function cleanEvents() {
 	function cleanEvents() {
 		for( w in watches )
 		for( w in watches )
 			for( e in w.events.copy() )
 			for( e in w.events.copy() )

+ 6 - 0
hide/tools/IdeData.hx

@@ -195,6 +195,12 @@ class IdeData {
 	}
 	}
 
 
 	public function saveDatabase( ?forcePrefabs ) {
 	public function saveDatabase( ?forcePrefabs ) {
+		if( dbWatcher != null ) {
+			var b = fileWatcher.isChangePending(dbWatcher);
+			if( b ) {
+				throw "Save when database is changed outside of Hide and is waiting for reload.";
+			}
+		}
 		hide.comp.cdb.DataFiles.save(function() {
 		hide.comp.cdb.DataFiles.save(function() {
 			if( databaseDiff != null ) {
 			if( databaseDiff != null ) {
 				sys.io.File.saveContent(getPath(databaseDiff), toJSON(new cdb.DiffFile().make(originDataBase,database)));
 				sys.io.File.saveContent(getPath(databaseDiff), toJSON(new cdb.DiffFile().make(originDataBase,database)));