Skip to content
Snippets Groups Projects
Commit 555020b4 authored by Vojtěch Moravec's avatar Vojtěch Moravec
Browse files

Fix duplicate listener problem.

We were adding the default listener in CompressorDecompressorBase, which
resulted in both ImageCompressor and specialized (SQ|VQ)ImageCompressor
having this listener. Then in getImage(Compressor|Decompressor) we
duplicated all listener from base class. This resulted in having two
same listeners, with different lamda adresses.
parent 1b39e3a5
No related branches found
No related tags found
No related merge requests found
......@@ -24,16 +24,19 @@ public abstract class CompressorDecompressorBase {
public CompressorDecompressorBase(CompressionOptions options) {
this.options = options;
this.codebookSize = (int) Math.pow(2, this.options.getBitsPerCodebookIndex());
// Default status listener, which can be override by setStatusListener.
if (options.isVerbose())
addStatusListener(this::defaultLog);
}
public void addStatusListener(final IStatusListener listener) {
if (statusListeners == null) {
statusListeners = new ArrayList<>(1);
}
if (statusListeners.size() > 0) {
System.out.println("Existing listeners:");
for (final IStatusListener l : statusListeners)
System.out.println("\t" + l);
}
System.out.println(this + " - Adding new statusListener: " + listener);
statusListeners.add(listener);
}
......@@ -129,7 +132,7 @@ public abstract class CompressorDecompressorBase {
}
private void defaultLog(final String message) {
public void defaultLog(final String message) {
if (options.isVerbose()) {
System.out.println(message);
}
......
......@@ -36,6 +36,10 @@ public class ImageCompressor extends CompressorDecompressorBase {
// Forward listeners to image compressor.
duplicateAllListeners(compressor);
if (options.isVerbose())
compressor.addStatusListener(this::defaultLog);
return compressor;
}
......
......@@ -55,6 +55,10 @@ public class ImageDecompressor extends CompressorDecompressorBase {
// Forward listeners to image decompressor.
duplicateAllListeners(decompressor);
if(options.isVerbose())
decompressor.addStatusListener(this::defaultLog);
return decompressor;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment