From 6d39b3ebd3e7bebeb17179e79a1aba18b9d5d51a Mon Sep 17 00:00:00 2001 From: lemon-sh Date: Fri, 20 Aug 2021 20:00:09 +0200 Subject: [PATCH] Fix GPU lock --- .../moe/lemonsh/waifu2xlemon/Waifu2x.java | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/main/java/moe/lemonsh/waifu2xlemon/Waifu2x.java b/src/main/java/moe/lemonsh/waifu2xlemon/Waifu2x.java index eb5ae11..bd7752b 100644 --- a/src/main/java/moe/lemonsh/waifu2xlemon/Waifu2x.java +++ b/src/main/java/moe/lemonsh/waifu2xlemon/Waifu2x.java @@ -35,28 +35,27 @@ public class Waifu2x { var inputFile = new File("wfx_input" + inputExtension).toPath().toAbsolutePath(); var outputFile = new File("wfx_output" + outputExtension); var outputFilePath = outputFile.toPath().toAbsolutePath(); - log.info("Starting processing %s image with options noise=%c scale=%c output=%s".formatted(inputExtension, noise, scale, outputExtension)); - Files.deleteIfExists(inputFile); - Files.copy(inputImage, inputFile); - Process waifuProcess; - synchronized (GPULock) { - waifuProcess = new ProcessBuilder(ExecutablePath.toString(), "-s", Character.toString(scale), "-n", - Character.toString(noise), "-i", inputFile.toString(), "-o", outputFilePath.toString()).start(); - waifuProcess.waitFor(); - } var result = new WaifuResult(); result.filename = outputFile.getName(); - Files.delete(inputFile); - log.info(result.stdout = new String(waifuProcess.getErrorStream().readAllBytes(), StandardCharsets.UTF_8)); - if (!(result.success = outputFile.isFile())) return result; var outputBytes = new ByteArrayOutputStream() { @Override public synchronized byte[] toByteArray() { return buf; } }; - Files.copy(outputFilePath, outputBytes); - Files.delete(outputFilePath); + synchronized (GPULock) { + log.info("Starting processing %s image with options noise=%c scale=%c output=%s".formatted(inputExtension, noise, scale, outputExtension)); + Files.deleteIfExists(inputFile); + Files.copy(inputImage, inputFile); + var waifuProcess = new ProcessBuilder(ExecutablePath.toString(), "-s", Character.toString(scale), "-n", + Character.toString(noise), "-i", inputFile.toString(), "-o", outputFilePath.toString()).start(); + waifuProcess.waitFor(); + Files.delete(inputFile); + log.info(result.stdout = new String(waifuProcess.getErrorStream().readAllBytes(), StandardCharsets.UTF_8)); + if (!(result.success = outputFile.isFile())) return result; + Files.copy(outputFilePath, outputBytes); + Files.delete(outputFilePath); + } result.image = new ByteArrayInputStream(outputBytes.toByteArray(), 0, outputBytes.size()); result.size = outputBytes.size(); return result;