From 08fe55564ca13703ee9c2e6a8d011443e8157f67 Mon Sep 17 00:00:00 2001 From: Laurent Clouet Date: Tue, 14 Apr 2020 17:32:22 +0200 Subject: [PATCH] Feat: Don't do last render image request, use local image --- resources/frame_compute_method.jpg | Bin 0 -> 8023 bytes resources/frame_power_detection.jpg | Bin 0 -> 7947 bytes src/com/sheepit/client/Client.java | 14 ++--- src/com/sheepit/client/Server.java | 36 ------------- .../standalone/swing/activity/Working.java | 51 +++++++++++------- 5 files changed, 37 insertions(+), 64 deletions(-) create mode 100644 resources/frame_compute_method.jpg create mode 100644 resources/frame_power_detection.jpg diff --git a/resources/frame_compute_method.jpg b/resources/frame_compute_method.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d65bd7fabb4f586ffe6bc77f5a4c8c1a685b39ba GIT binary patch literal 8023 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 literal 0 HcmV?d00001 diff --git a/src/com/sheepit/client/Client.java b/src/com/sheepit/client/Client.java index 77b1f89..1dbbc6b 100644 --- a/src/com/sheepit/client/Client.java +++ b/src/com/sheepit/client/Client.java @@ -329,9 +329,6 @@ public class Client { gui.error("Client::run problem with confirmJob (returned " + ret + ")"); sendError(step); } - else { - gui.AddFrameRendered(); - } } else { this.jobsToValidate.add(this.renderingJob); @@ -446,9 +443,6 @@ public class Client { this.log.debug("Client::senderLoop confirm failed, ret: " + ret); sendError(step); } - else { - gui.AddFrameRendered(); - } } catch (InterruptedException e) { } @@ -795,15 +789,17 @@ public class Client { } } } + this.isValidatingJob = false; + this.previousJob = ajob; + + gui.AddFrameRendered(); // we can remove the frame file File frame = new File(ajob.getOutputImagePath()); frame.delete(); ajob.setOutputImagePath(null); - - this.isValidatingJob = false; - this.previousJob = ajob; + return Error.Type.OK; } diff --git a/src/com/sheepit/client/Server.java b/src/com/sheepit/client/Server.java index cdfd4a8..efd2fcd 100644 --- a/src/com/sheepit/client/Server.java +++ b/src/com/sheepit/client/Server.java @@ -686,42 +686,6 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager return ServerCode.UNKNOWN; } - public byte[] getLastRender() { - try { - HttpURLConnection httpCon = this.HTTPRequest(this.getPage("last-render-frame")); - - InputStream inStrm = httpCon.getInputStream(); - if (httpCon.getResponseCode() != HttpURLConnection.HTTP_OK) { - this.log.debug("Server::getLastRender code not ok " + httpCon.getResponseCode()); - return null; - } - int size = httpCon.getContentLength(); - - if (size <= 0) { - this.log.debug("Server::getLastRender size is negative (size: " + size + ")"); - return null; - } - - byte[] ret = new byte[size]; - byte[] ch = new byte[512 * 1024]; - int n = 0; - int i = 0; - while ((n = inStrm.read(ch)) != -1) { - System.arraycopy(ch, 0, ret, i, n); - i += n; - } - inStrm.close(); - return ret; - } - catch (Exception e) { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - e.printStackTrace(pw); - this.log.debug("Server::getLastRender Exception " + e + " stacktrace: " + sw.toString()); - } - return null; - } - private String generateXMLForMD5cache() { List md5s = new ArrayList<>(); for (File local_file : this.user_config.getLocalCacheFiles()) { diff --git a/src/com/sheepit/client/standalone/swing/activity/Working.java b/src/com/sheepit/client/standalone/swing/activity/Working.java index 2c0b116..f4b3b40 100644 --- a/src/com/sheepit/client/standalone/swing/activity/Working.java +++ b/src/com/sheepit/client/standalone/swing/activity/Working.java @@ -27,9 +27,9 @@ import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; +import java.awt.Image; +import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.text.DecimalFormat; import java.util.Date; @@ -46,11 +46,8 @@ import javax.swing.SpringLayout; import com.sheepit.client.Client; import com.sheepit.client.Job; -import com.sheepit.client.RenderProcess; -import com.sheepit.client.Server; import com.sheepit.client.Stats; import com.sheepit.client.Utils; -import com.sheepit.client.os.OS; import com.sheepit.client.standalone.GuiSwing; import com.sheepit.client.standalone.GuiSwing.ActivityType; @@ -307,28 +304,44 @@ public class Working implements Activity { Client client = parent.getClient(); if (client != null) { Job lastJob = client.getPreviousJob(); - Server server = client.getServer(); - if (server != null) { - byte[] data = server.getLastRender(); - if (data != null) { - InputStream is = new ByteArrayInputStream(data); + if (lastJob != null) { + ImageIcon icon = null; + int idInt = Integer.parseInt(lastJob.getId()); + if (idInt == 1) { + icon = new ImageIcon(getClass().getResource("/frame_compute_method.jpg")); + } + else if (idInt < 20) { + icon = new ImageIcon(getClass().getResource("/frame_power_detection.jpg")); + } + else { try { - BufferedImage image = ImageIO.read(is); - if (image != null) { - lastRender.setIcon(new ImageIcon(image)); - if (lastJob != null) { - // don't use lastJob.getProcessRender().getDuration() due to timezone - if (lastJob.getProcessRender().getDuration() > 1) { - lastRenderTime.setText("Render time : " + Utils.humanDuration(new Date(lastJob.getProcessRender().getEndTime() - lastJob.getProcessRender().getStartTime()))); - } - } + String path = lastJob.getOutputImagePath(); + + BufferedImage img = ImageIO.read(new File(path)); + float width = img.getWidth(); + float height = img.getHeight(); + float factor = 1.0f; + if (height > 200) { + factor = 200f / height; } + if (width * factor > 200) { + factor = Math.min(factor, 200f / width); + } + icon = new ImageIcon(img.getScaledInstance((int)(width * factor), (int)(height * factor), Image.SCALE_FAST)); } catch (IOException e) { System.out.println("Working::showLastRender() exception " + e); e.printStackTrace(); } } + + if (icon != null) { + lastRender.setIcon(icon); + // don't use lastJob.getProcessRender().getDuration() due to timezone + if (lastJob.getProcessRender().getDuration() > 1) { + lastRenderTime.setText("Render time : " + Utils.humanDuration(new Date(lastJob.getProcessRender().getEndTime() - lastJob.getProcessRender().getStartTime()))); + } + } } }