From dfd3166bb90d9fa1c676c1052afe9b38ddc56cf3 Mon Sep 17 00:00:00 2001 From: "honfika@gmail.com" Date: Wed, 21 Jan 2015 12:59:07 +0100 Subject: [PATCH] #776 FFDec stop working at all after setting "number of threads" to 0 fixed --- libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java | 2 +- .../src/com/jpexs/decompiler/flash/SWFInputStream.java | 2 +- .../jpexs/decompiler/flash/abc/types/traits/Traits.java | 2 +- .../decompiler/flash/configuration/Configuration.java | 9 +++++++++ .../jpexs/decompiler/flash/gui/FolderPreviewPanel.java | 4 ++-- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java index 8c5a557a0..3df7d592f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWF.java @@ -1139,7 +1139,7 @@ public final class SWF implements SWFContainerItem, Timelined { logger.log(Level.SEVERE, "Error during ABC export", ex); } } else { - ExecutorService executor = Executors.newFixedThreadPool(Configuration.parallelThreadCount.get()); + ExecutorService executor = Executors.newFixedThreadPool(Configuration.getParallelThreadCount()); List> futureResults = new ArrayList<>(); for (MyEntry item : packs) { Future future = executor.submit(new ExportPackTask(handler, cnt, packs.size(), item.getKey(), item.getValue(), outdir, exportMode, parallel)); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFInputStream.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFInputStream.java index efe947a33..2bbb57b9f 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFInputStream.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFInputStream.java @@ -1059,7 +1059,7 @@ public class SWFInputStream implements AutoCloseable { ExecutorService executor = null; List> futureResults = new ArrayList<>(); if (parallel) { - executor = Executors.newFixedThreadPool(Configuration.parallelThreadCount.get()); + executor = Executors.newFixedThreadPool(Configuration.getParallelThreadCount()); futureResults = new ArrayList<>(); } List tags = new ArrayList<>(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Traits.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Traits.java index ad9248668..259ad25d8 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Traits.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/types/traits/Traits.java @@ -169,7 +169,7 @@ public class Traits implements Serializable { task.call(); } } else { - ExecutorService executor = Executors.newFixedThreadPool(Configuration.parallelThreadCount.get()); + ExecutorService executor = Executors.newFixedThreadPool(Configuration.getParallelThreadCount()); List> futureResults = null; futureResults = new ArrayList<>(); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java index 4acad08b3..29031eee1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/configuration/Configuration.java @@ -690,6 +690,15 @@ public class Configuration { return ret; } + public static int getParallelThreadCount() { + int count = parallelThreadCount.get(); + if (count < 2) { + count = 2; + } + + return count; + } + public static File getFlashLibPath() { String home = getFFDecHome(); File libsdir = new File(home + "flashlib"); diff --git a/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java b/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java index d56f5be68..ffd20353e 100644 --- a/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/FolderPreviewPanel.java @@ -87,7 +87,7 @@ public class FolderPreviewPanel extends JPanel { static { noImage.fillTransparent(); - executor = Executors.newFixedThreadPool(Configuration.parallelSpeedUp.get() ? Configuration.parallelThreadCount.get() : 1); + executor = Executors.newFixedThreadPool(Configuration.parallelSpeedUp.get() ? Configuration.getParallelThreadCount() : 1); } public FolderPreviewPanel(final MainPanel mainPanel, List items) { @@ -156,7 +156,7 @@ public class FolderPreviewPanel extends JPanel { public synchronized void setItems(List items) { this.items = items; executor.shutdownNow(); - executor = Executors.newFixedThreadPool(Configuration.parallelSpeedUp.get() ? Configuration.parallelThreadCount.get() : 1); + executor = Executors.newFixedThreadPool(Configuration.parallelSpeedUp.get() ? Configuration.getParallelThreadCount() : 1); cachedPreviews.clear(); revalidate(); repaint();