From c801835c83ebfd966e9fae0f1946bc4d8bc916e4 Mon Sep 17 00:00:00 2001 From: Laurent Clouet Date: Tue, 27 Jan 2015 21:44:32 +0000 Subject: [PATCH] Bugfix: relaunch the client when on settings validation (new login/password for example) --- .../sheepit/client/standalone/GuiSwing.java | 21 +++++++++++++++++++ .../sheepit/client/standalone/GuiText.java | 9 +++++++- .../client/standalone/GuiTextOneLine.java | 9 +++++++- src/com/sheepit/client/standalone/Worker.java | 3 --- 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/com/sheepit/client/standalone/GuiSwing.java b/src/com/sheepit/client/standalone/GuiSwing.java index 047fb1d..e3928a4 100644 --- a/src/com/sheepit/client/standalone/GuiSwing.java +++ b/src/com/sheepit/client/standalone/GuiSwing.java @@ -48,6 +48,8 @@ public class GuiSwing extends JFrame implements Gui { private boolean waitingForAuthentication; private Client client; + private ThreadClient threadClient; + public GuiSwing() { framesRendered = 0; @@ -158,6 +160,14 @@ public class GuiSwing extends JFrame implements Gui { notifyAll(); } + if (threadClient != null && threadClient.isAlive()) { + System.out.println("Old thread client is alive, do not regenerate one"); + } + else { + threadClient = new ThreadClient(); + threadClient.start(); + } + showActivity(ActivityType.WORKING); } @@ -175,4 +185,15 @@ public class GuiSwing extends JFrame implements Gui { setVisible(true); panel.repaint(); } + + public class ThreadClient extends Thread { + @Override + public void run() { + if (GuiSwing.this.client != null) { + int ret = GuiSwing.this.client.run(); + System.out.println("Client.run return " + ret); + } + } + } + } diff --git a/src/com/sheepit/client/standalone/GuiText.java b/src/com/sheepit/client/standalone/GuiText.java index 0788a4f..a9b7cfa 100644 --- a/src/com/sheepit/client/standalone/GuiText.java +++ b/src/com/sheepit/client/standalone/GuiText.java @@ -27,6 +27,8 @@ public class GuiText implements Gui { private int framesRendered; private Log log; + private Client client; + public GuiText() { this.framesRendered = 0; this.log = Log.getInstance(null); @@ -34,6 +36,10 @@ public class GuiText implements Gui { @Override public void start() { + if (client != null) { + client.run(); + client.stop(); + } } @Override @@ -66,11 +72,12 @@ public class GuiText implements Gui { @Override public void setClient(Client cli) { + client = cli; } @Override public Client getClient() { - return null; + return client; } } diff --git a/src/com/sheepit/client/standalone/GuiTextOneLine.java b/src/com/sheepit/client/standalone/GuiTextOneLine.java index b7045a6..522f771 100644 --- a/src/com/sheepit/client/standalone/GuiTextOneLine.java +++ b/src/com/sheepit/client/standalone/GuiTextOneLine.java @@ -9,6 +9,8 @@ public class GuiTextOneLine implements Gui { private String status; private String line; + private Client client; + public GuiTextOneLine() { rendered = 0; remaining = 0; @@ -18,6 +20,10 @@ public class GuiTextOneLine implements Gui { @Override public void start() { + if (client != null) { + client.run(); + client.stop(); + } } @Override @@ -50,11 +56,12 @@ public class GuiTextOneLine implements Gui { @Override public void setClient(Client cli) { + client = cli; } @Override public Client getClient() { - return null; + return client; } private void updateLine() { diff --git a/src/com/sheepit/client/standalone/Worker.java b/src/com/sheepit/client/standalone/Worker.java index ac52e5a..56fa055 100644 --- a/src/com/sheepit/client/standalone/Worker.java +++ b/src/com/sheepit/client/standalone/Worker.java @@ -291,8 +291,5 @@ public class Worker { hook.attachShutDownHook(); gui.start(); - - cli.run(); - cli.stop(); } }