diff options
author | Marius Kintel <marius@kintel.net> | 2013-05-30 20:51:00 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2013-05-30 20:51:00 (GMT) |
commit | 06237a067fb124be1e8ead8fe54d1098a083734f (patch) | |
tree | 84bf4ea3b22409119d3f6fc23cdba3f55f6510bd | |
parent | 0041f3012d8a401c9e2750ed08fe4e5ce80eb4a9 (diff) |
Related to #181, also ignore removal of the main file when auto-reloading
-rw-r--r-- | src/mainwin.cc | 5 | ||||
-rw-r--r-- | testdata/modulecache-tests/README.txt | 4 | ||||
-rwxr-xr-x | testdata/modulecache-tests/cascade.sh | 3 | ||||
-rwxr-xr-x | testdata/modulecache-tests/cascade2.sh | 1 | ||||
-rw-r--r-- | testdata/modulecache-tests/cascadetest.scad | 10 |
5 files changed, 11 insertions, 12 deletions
diff --git a/src/mainwin.cc b/src/mainwin.cc index 788f824..eedd3a5 100644 --- a/src/mainwin.cc +++ b/src/mainwin.cc @@ -1106,7 +1106,10 @@ bool MainWindow::fileChangedOnDisk() if (!this->fileName.isEmpty()) { struct stat st; memset(&st, 0, sizeof(struct stat)); - stat(this->fileName.toLocal8Bit(), &st); + bool valid = (stat(this->fileName.toLocal8Bit(), &st) == 0); + // If file isn't there, just return and use current editor text + if (!valid) return false; + std::string newid = str(boost::format("%x.%x") % st.st_mtime % st.st_size); if (newid != this->autoReloadId) { diff --git a/testdata/modulecache-tests/README.txt b/testdata/modulecache-tests/README.txt index c38822f..214acc5 100644 --- a/testdata/modulecache-tests/README.txt +++ b/testdata/modulecache-tests/README.txt @@ -118,7 +118,9 @@ o ./cascade.sh o Open cascadetest.scad o Turn on Automatic Reload and Compile o Verify that the 4 objects render correctly -o rm cascade-*.scad +o rm cascadetest.scad +o Verify that no rerendering was triggered (the 4 objects are still there) +o rm cascade*.scad o Verify that no rerendering was triggered (the 4 objects are still there) o ./cascade2.sh o Verify that everything reloads at once without flickering diff --git a/testdata/modulecache-tests/cascade.sh b/testdata/modulecache-tests/cascade.sh index 6f15c7f..5dd0ef7 100755 --- a/testdata/modulecache-tests/cascade.sh +++ b/testdata/modulecache-tests/cascade.sh @@ -1,6 +1,7 @@ #!/bin/bash -rm cascade-*.scad +rm cascade*.scad +echo "include <cascade-A.scad> include <cascade-B.scad> use <cascade-C.scad> use <cascade-D.scad> A(); translate([11,0,0]) B(); translate([22,0,0]) C(); translate([33,0,0]) D();" > cascadetest.scad sleep 0.05 echo "module A() { sphere(5); }" > cascade-A.scad sleep 0.05 diff --git a/testdata/modulecache-tests/cascade2.sh b/testdata/modulecache-tests/cascade2.sh index aa17c6c..50f98e0 100755 --- a/testdata/modulecache-tests/cascade2.sh +++ b/testdata/modulecache-tests/cascade2.sh @@ -1,6 +1,7 @@ #!/bin/bash rm cascade-*.scad +echo "include <cascade-A.scad> include <cascade-B.scad> use <cascade-C.scad> use <cascade-D.scad> A(); translate([11,0,0]) B(); translate([22,0,0]) C(); translate([33,0,0]) D();" > cascadetest.scad sleep 0.1 echo "module A() { sphere(6); }" > cascade-A.scad sleep 0.1 diff --git a/testdata/modulecache-tests/cascadetest.scad b/testdata/modulecache-tests/cascadetest.scad index 5cce652..33a089e 100644 --- a/testdata/modulecache-tests/cascadetest.scad +++ b/testdata/modulecache-tests/cascadetest.scad @@ -1,9 +1 @@ -include <cascade-A.scad> -include <cascade-B.scad> -use <cascade-C.scad> -use <cascade-D.scad> - -A(); -translate([11,0,0]) B(); -translate([22,0,0]) C(); -translate([33,0,0]) D(); +include <cascade-A.scad> include <cascade-B.scad> use <cascade-C.scad> use <cascade-D.scad> A(); translate([11,0,0]) B(); translate([22,0,0]) C(); translate([33,0,0]) D(); |