Browse Source

skip reload if tmp lock file exists

ncannasse 7 years ago
parent
commit
e6df578b15
1 changed files with 22 additions and 14 deletions
  1. 22 14
      hxd/fs/LocalFileSystem.hx

+ 22 - 14
hxd/fs/LocalFileSystem.hx

@@ -224,6 +224,7 @@ private class LocalEntry extends FileEntry {
 	var watchTime : Float;
 	static var WATCH_INDEX = 0;
 	static var WATCH_LIST : Array<LocalEntry> = null;
+	static var tmpDir : String = null;
 
 	inline function getModifTime(){
 		#if flash
@@ -240,27 +241,34 @@ private class LocalEntry extends FileEntry {
 			return;
 		}
 		var t = try w.getModifTime() catch( e : Dynamic ) -1;
-		if( t != w.watchTime ) {
-			#if flash
+		if( t == w.watchTime ) return;
+
+		#if flash
 			// check we can write (might be deleted/renamed/currently writing)
 			if( !w.isDirectory )
-			try {
-				var f = new flash.filesystem.FileStream();
-				f.open(w.file, flash.filesystem.FileMode.READ);
-				f.close();
-				f.open(w.file, flash.filesystem.FileMode.APPEND);
-				f.close();
-			} catch( e : Dynamic ) return;
-			#elseif sys
+				try {
+					var f = new flash.filesystem.FileStream();
+					f.open(w.file, flash.filesystem.FileMode.READ);
+					f.close();
+					f.open(w.file, flash.filesystem.FileMode.APPEND);
+					f.close();
+				} catch( e : Dynamic ) return;
+		#elseif sys
+			if( tmpDir == null ) {
+				tmpDir = Sys.getEnv("TEMP");
+				if( tmpDir == null ) tmpDir = Sys.getEnv("TMPDIR");
+				if( tmpDir == null ) tmpDir = Sys.getEnv("TMP");
+			}
+			var lockFile = tmpDir+"/"+w.file.split("/").pop()+".lock";
+			if( sys.FileSystem.exists(lockFile) ) return;
 			if( !w.isDirectory )
 			try {
 				var fp = sys.io.File.append(w.file);
 				fp.close();
 			}catch( e : Dynamic ) return;
-			#end
-			w.watchTime = t;
-			w.watchCallback();
-		}
+		#end
+		w.watchTime = t;
+		w.watchCallback();
 	}
 
 	override function watch( onChanged : Null < Void -> Void > ) {