From df9f02e66aef5e04140d8af75592d8037f2ec8cf Mon Sep 17 00:00:00 2001 From: drdev Date: Wed, 30 Jul 2014 02:39:24 +0000 Subject: [PATCH] Add try/catch to FContainer::draw() so screen doesn't bug out when something throws an exception during rendering --- .../src/forge/toolbox/FContainer.java | 54 ++++++++++--------- 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/forge-gui-mobile/src/forge/toolbox/FContainer.java b/forge-gui-mobile/src/forge/toolbox/FContainer.java index f6a71d6106e..2fb127477c4 100644 --- a/forge-gui-mobile/src/forge/toolbox/FContainer.java +++ b/forge-gui-mobile/src/forge/toolbox/FContainer.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import com.badlogic.gdx.math.Vector2; import forge.Graphics; +import forge.error.BugReporter; public abstract class FContainer extends FDisplayObject { private final ArrayList children = new ArrayList(); @@ -38,33 +39,38 @@ public abstract class FContainer extends FDisplayObject { } public void draw(Graphics g) { - drawBackground(g); - - boolean needOverlayDrawn = true; - for (FDisplayObject child : children) { - if (child.isVisible()) { - if (child.drawAboveOverlay() && needOverlayDrawn) { - drawOverlay(g); - needOverlayDrawn = false; + try { + drawBackground(g); + + boolean needOverlayDrawn = true; + for (FDisplayObject child : children) { + if (child.isVisible()) { + if (child.drawAboveOverlay() && needOverlayDrawn) { + drawOverlay(g); + needOverlayDrawn = false; + } + + final boolean disabled = !child.isEnabled(); + if (disabled) { + g.setAlphaComposite(DISABLED_COMPOSITE); + } + + g.draw(child); + + if (disabled) { + g.resetAlphaComposite(); + } + + child.drawOnContainer(g); //give child an additional chance to draw additional content on container outside its bounds } - - final boolean disabled = !child.isEnabled(); - if (disabled) { - g.setAlphaComposite(DISABLED_COMPOSITE); - } - - g.draw(child); - - if (disabled) { - g.resetAlphaComposite(); - } - - child.drawOnContainer(g); //give child an additional chance to draw additional content on container outside its bounds + } + + if (needOverlayDrawn) { + drawOverlay(g); } } - - if (needOverlayDrawn) { - drawOverlay(g); + catch (Exception ex) { + BugReporter.reportException(ex); } }