Do not bother with exceptions during exporting when process was cancelled

This commit is contained in:
johni0702
2015-07-16 19:08:24 +02:00
parent 56efc8c5ec
commit 84cb8b2988
2 changed files with 11 additions and 1 deletions

View File

@@ -39,6 +39,7 @@ public class VideoRenderer implements RenderInfo {
private final Minecraft mc = Minecraft.getMinecraft(); private final Minecraft mc = Minecraft.getMinecraft();
private final ReplaySender replaySender; private final ReplaySender replaySender;
private final RenderOptions options; private final RenderOptions options;
private final VideoWriter videoWriter;
private int fps; private int fps;
private boolean mouseWasGrabbed; private boolean mouseWasGrabbed;
@@ -60,7 +61,7 @@ public class VideoRenderer implements RenderInfo {
this.gui = new GuiVideoRenderer(this); this.gui = new GuiVideoRenderer(this);
this.replaySender = ReplayMod.replaySender; this.replaySender = ReplayMod.replaySender;
this.options = options; this.options = options;
this.renderingPipeline = Pipelines.newPipeline(options.getMode(), this, new VideoWriter(options) { this.renderingPipeline = Pipelines.newPipeline(options.getMode(), this, videoWriter = new VideoWriter(options) {
@Override @Override
public void consume(RGBFrame frame) { public void consume(RGBFrame frame) {
gui.updatePreview(frame); gui.updatePreview(frame);
@@ -418,6 +419,7 @@ public class VideoRenderer implements RenderInfo {
} }
public void cancel() { public void cancel() {
videoWriter.abort();
this.cancelled = true; this.cancelled = true;
renderingPipeline.cancel(); renderingPipeline.cancel();
} }

View File

@@ -31,6 +31,7 @@ public class VideoWriter implements FrameConsumer<RGBFrame> {
private final OutputStream outputStream; private final OutputStream outputStream;
private final WritableByteChannel channel; private final WritableByteChannel channel;
private final String commandArgs; private final String commandArgs;
private volatile boolean aborted;
public VideoWriter(final RenderOptions options) throws IOException { public VideoWriter(final RenderOptions options) throws IOException {
this.options = options.copy(); this.options = options.copy();
@@ -90,6 +91,9 @@ public class VideoWriter implements FrameConsumer<RGBFrame> {
channel.write(frame.getByteBuffer()); channel.write(frame.getByteBuffer());
ByteBufferPool.release(frame.getByteBuffer()); ByteBufferPool.release(frame.getByteBuffer());
} catch (Throwable t) { } catch (Throwable t) {
if (aborted) {
return;
}
CrashReport report = CrashReport.makeCrashReport(t, "Exporting frame"); CrashReport report = CrashReport.makeCrashReport(t, "Exporting frame");
CrashReportCategory exportDetails = report.makeCategory("Export details"); CrashReportCategory exportDetails = report.makeCategory("Export details");
exportDetails.addCrashSection("Export command", options.getExportCommand()); exportDetails.addCrashSection("Export command", options.getExportCommand());
@@ -106,4 +110,8 @@ public class VideoWriter implements FrameConsumer<RGBFrame> {
isTrue(width == options.getWidth(), "Width has to be %d but was %d", options.getWidth(), width); isTrue(width == options.getWidth(), "Width has to be %d but was %d", options.getWidth(), width);
isTrue(height == options.getHeight(), "Height has to be %d but was %d", options.getHeight(), height); isTrue(height == options.getHeight(), "Height has to be %d but was %d", options.getHeight(), height);
} }
public void abort() {
aborted = true;
}
} }