From eeb9da15451453f17734664bd2faae7c7b2c3e6c Mon Sep 17 00:00:00 2001 From: Doublestrike Date: Thu, 1 Dec 2011 04:37:13 +0000 Subject: [PATCH] Fixed crash between multiple games, switching between old/new UI. --- src/main/java/forge/GuiDisplay.java | 16 ++++++++++++++++ src/main/java/forge/control/ControlMatchUI.java | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/main/java/forge/GuiDisplay.java b/src/main/java/forge/GuiDisplay.java index 674e18fbabd..4eb1984bbde 100644 --- a/src/main/java/forge/GuiDisplay.java +++ b/src/main/java/forge/GuiDisplay.java @@ -692,6 +692,22 @@ public class GuiDisplay extends JFrame implements CardContainer, Display { *

*/ private void addObservers() { + // Remove all observers, placed by new UI. + AllZone.getHumanPlayer().deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Hand).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Graveyard).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Library).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Battlefield).deleteObservers(); + + AllZone.getComputerPlayer().deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Hand).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Graveyard).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Library).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Battlefield).deleteObservers(); + + AllZone.getStack().deleteObservers(); + AllZone.getInputControl().deleteObservers(); + // long method final Observer o = new Observer() { @Override diff --git a/src/main/java/forge/control/ControlMatchUI.java b/src/main/java/forge/control/ControlMatchUI.java index 3e40a28a8cd..102d1828f6b 100644 --- a/src/main/java/forge/control/ControlMatchUI.java +++ b/src/main/java/forge/control/ControlMatchUI.java @@ -74,6 +74,22 @@ public class ControlMatchUI { * */ public void initMatch() { + // Remove all observers, placed by old UI. + AllZone.getHumanPlayer().deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Hand).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Graveyard).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Library).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Battlefield).deleteObservers(); + + AllZone.getComputerPlayer().deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Hand).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Graveyard).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Library).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Battlefield).deleteObservers(); + + AllZone.getStack().deleteObservers(); + AllZone.getInputControl().deleteObservers(); + // All child components have been assembled; observers and listeners can // be added safely. this.view.getAreaSidebar().getTabber().getController().addObservers();