JAL-2665 OOM checks just in case bug/JAL-2665-2.10.2b
authorkiramt <k.mourao@dundee.ac.uk>
Tue, 29 Aug 2017 10:59:54 +0000 (11:59 +0100)
committerkiramt <k.mourao@dundee.ac.uk>
Tue, 29 Aug 2017 10:59:54 +0000 (11:59 +0100)
src/jalview/gui/SeqCanvas.java

index 8d8aef3..3d8b8aa 100755 (executable)
@@ -461,20 +461,34 @@ public class SeqCanvas extends JComponent implements ViewportListenerI
           int canvasHeight, int startRes)
   {
     SequenceGroup group = av.getSelectionGroup();
-    BufferedImage selectImage = new BufferedImage(canvasWidth, canvasHeight,
-            BufferedImage.TYPE_INT_ARGB); // ARGB so alpha compositing works
+
+    drawWrappedPanel(g, canvasWidth, canvasHeight, startRes);
 
     if (group != null)
     {
-      Graphics2D g2 = selectImage.createGraphics();
-      setupSelectionGroup(g2, selectImage);
-      drawWrappedSelection(g2, group, canvasWidth, canvasHeight,
-              startRes);
-      drawWrappedPanel(g, canvasWidth, canvasHeight, startRes);
-      g2.setComposite(
-              AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
-      g.drawImage(selectImage, 0, 0, this);
-      g2.dispose();
+      BufferedImage selectImage = null;
+      try
+      {
+        selectImage = new BufferedImage(canvasWidth, canvasHeight,
+                BufferedImage.TYPE_INT_ARGB); // ARGB so alpha compositing works
+      } catch (OutOfMemoryError er)
+      {
+        System.gc();
+        System.err.println("Print image OutOfMemory Error.\n" + er);
+        new OOMWarning("Creating wrapped alignment image for printing", er);
+      }
+      if (selectImage != null)
+      {
+        Graphics2D g2 = selectImage.createGraphics();
+        setupSelectionGroup(g2, selectImage);
+        drawWrappedSelection(g2, group, canvasWidth, canvasHeight,
+                startRes);
+
+        g2.setComposite(
+                AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
+        g.drawImage(selectImage, 0, 0, this);
+        g2.dispose();
+      }
     }
   }