diff --git a/src/com/sheepit/client/Client.java b/src/com/sheepit/client/Client.java index 621219f..a3e0428 100644 --- a/src/com/sheepit/client/Client.java +++ b/src/com/sheepit/client/Client.java @@ -497,7 +497,7 @@ public class Client { // no exception should be raised to actual launcher (applet or standalone) } - if (error != null && (error == Error.Type.RENDERER_CRASHED || error == Error.Type.RENDERER_KILLED_BY_USER)) { + if (error != null && (error == Error.Type.RENDERER_CRASHED || error == Error.Type.RENDERER_KILLED_BY_USER || error == Error.Type.RENDERER_KILLED_BY_SERVER)) { // do nothing, we can ask for a job right away } else { diff --git a/src/com/sheepit/client/Error.java b/src/com/sheepit/client/Error.java index 5543c84..b4049c3 100644 --- a/src/com/sheepit/client/Error.java +++ b/src/com/sheepit/client/Error.java @@ -40,6 +40,7 @@ public class Error { RENDERER_OUT_OF_MEMORY(21), RENDERER_KILLED(14), RENDERER_KILLED_BY_USER(20), + RENDERER_KILLED_BY_SERVER(22), RENDERER_MISSING_LIBRARIES(15), FAILED_TO_EXECUTE(16), OS_NOT_SUPPORTED(17), @@ -170,6 +171,8 @@ public class Error { return "The renderer stopped because either you asked to stop or the server did (usually for a render time too high)."; case RENDERER_KILLED_BY_USER: return "The renderer stopped because you've blocked its project."; + case RENDERER_KILLED_BY_SERVER: + return "The renderer stopped because it's been killed by the server. Usually because the project will take too much time or it's been paused."; case SESSION_DISABLED: return "The server has disabled your session. Your client may have generated a broken frame (GPU not compatible, not enough RAM/VRAM, etc)."; case RENDERER_NOT_AVAILABLE: diff --git a/src/com/sheepit/client/Job.java b/src/com/sheepit/client/Job.java index 4954997..84e0f07 100644 --- a/src/com/sheepit/client/Job.java +++ b/src/com/sheepit/client/Job.java @@ -63,6 +63,7 @@ public class Job { private RenderProcess render; private boolean askForRendererKill; private boolean userBlockJob; + private boolean serverBlockJob; private Gui gui; private Configuration config; private Log log; @@ -86,6 +87,7 @@ public class Job { updateRenderingStatusMethod = update_method_; askForRendererKill = false; userBlockJob = false; + serverBlockJob = false; log = log_; render = new RenderProcess(); } @@ -146,6 +148,14 @@ public class Job { return userBlockJob; } + public void setServerBlockJob(boolean val) { + serverBlockJob = val; + } + + public boolean getServerBlockJob() { + return serverBlockJob; + } + public String getRenderCommand() { return rendererCommand; } @@ -346,6 +356,9 @@ public class Job { if (files.length != 0) { new File(files[0].getAbsolutePath()).delete(); } + if (getServerBlockJob()) { + return Error.Type.RENDERER_KILLED_BY_SERVER; + } if (getUserBlockJob()) { return Error.Type.RENDERER_KILLED_BY_USER; } diff --git a/src/com/sheepit/client/Server.java b/src/com/sheepit/client/Server.java index c25fdd0..c76b40c 100644 --- a/src/com/sheepit/client/Server.java +++ b/src/com/sheepit/client/Server.java @@ -139,6 +139,7 @@ public class Server extends Thread implements HostnameVerifier, X509TrustManager this.log.debug("Server::keeepmealive server asked to kill local render process"); // kill the current process, it will generate an error but it's okay if (this.client != null && this.client.getRenderingJob() != null && this.client.getRenderingJob().getProcessRender().getProcess() != null) { + this.client.getRenderingJob().setServerBlockJob(true); OS.getOS().kill(this.client.getRenderingJob().getProcessRender().getProcess()); this.client.getRenderingJob().setAskForRendererKill(true); }