git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'releases/Release_2_11_3_Branch'
[jalview.git]
/
src
/
jalview
/
gui
/
AppJmol.java
diff --git
a/src/jalview/gui/AppJmol.java
b/src/jalview/gui/AppJmol.java
index
ba4eb9c
..
4d0de1b
100644
(file)
--- a/
src/jalview/gui/AppJmol.java
+++ b/
src/jalview/gui/AppJmol.java
@@
-421,6
+421,14
@@
public class AppJmol extends StructureViewerBase
}
}
+ public boolean isRepainting()
+ {
+ if (renderPanel!=null && renderPanel.isVisible())
+ {
+ return renderPanel.repainting;
+ }
+ return false;
+ }
/**
* Outputs the Jmol viewer image as an image file, after prompting the user to
* choose a file and (for EPS) choice of Text or Lineart character rendering
/**
* Outputs the Jmol viewer image as an image file, after prompting the user to
* choose a file and (for EPS) choice of Text or Lineart character rendering
@@
-431,6
+439,13
@@
public class AppJmol extends StructureViewerBase
@Override
public void makePDBImage(ImageMaker.TYPE type)
{
@Override
public void makePDBImage(ImageMaker.TYPE type)
{
+ while (!isRepainting())
+ {
+ try {
+ Thread.sleep(2);
+ } catch (Exception q)
+ {}
+ }
try
{
makePDBImage(null, type, null,
try
{
makePDBImage(null, type, null,
@@
-503,10
+518,17
@@
public class AppJmol extends StructureViewerBase
}
});
runner.start();
}
});
runner.start();
+ long time = 0;
do
{
Thread.sleep(25);
do
{
Thread.sleep(25);
- } while (runner.isAlive());
+ } while (runner.isAlive() && time++ < 4000);
+ if (time >= 4000)
+ {
+ runner.interrupt();
+ throw new ImageOutputException(
+ "Jmol took too long to export. Waited for 100 seconds.");
+ }
} catch (Throwable e)
{
throw new ImageOutputException(
} catch (Throwable e)
{
throw new ImageOutputException(
@@
-620,10
+642,17
@@
public class AppJmol extends StructureViewerBase
}
else
{
}
else
{
- jmb.jmolViewer.renderScreenImage(g, currentSize.width,
- currentSize.height);
+ repainting=true;
+ synchronized (jmb)
+ {
+ jmb.jmolViewer.renderScreenImage(g, currentSize.width,
+ currentSize.height);
+
+ }
+ repainting=false;
}
}
}
}
+ volatile boolean repainting=false;
}
@Override
}
@Override