From 345ebd023e398df875d769f85061551888cd71e6 Mon Sep 17 00:00:00 2001 From: kiramt Date: Tue, 29 Aug 2017 11:59:54 +0100 Subject: [PATCH 1/1] JAL-2665 OOM checks just in case --- src/jalview/gui/SeqCanvas.java | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/src/jalview/gui/SeqCanvas.java b/src/jalview/gui/SeqCanvas.java index 8d8aef3..3d8b8aa 100755 --- a/src/jalview/gui/SeqCanvas.java +++ b/src/jalview/gui/SeqCanvas.java @@ -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(); + } } } -- 1.7.10.2