Skip to content
Snippets Groups Projects
Commit 8d2951ad authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

fix: miscStuffExtended

suggestedChanges
parent 81f96944
No related branches found
No related tags found
2 merge requests!32Misc stuff extended changes,!31Misc stuff extended
......@@ -10,7 +10,8 @@ public class SimpleObservableList<T> extends ModifiableObservableListBase<T> {
private final List<T> innerList;
private final Runnable numberOfListenersChangedCallback;
private int numberOfSubscribedListeners = 0;
public SimpleObservableList(final List<T> list) {
this(list, null);
}
......@@ -47,19 +48,23 @@ public class SimpleObservableList<T> extends ModifiableObservableListBase<T> {
return innerList.remove(index);
}
public boolean hasAnyListeners() {
return hasListeners();
synchronized public boolean hasAnyListeners() {
assert numberOfSubscribedListeners >= 0;
return numberOfSubscribedListeners > 0;
}
public void subscribe(ListChangeListener<? super T> listener) {
synchronized public void subscribe(ListChangeListener<? super T> listener) {
super.addListener(listener);
numberOfSubscribedListeners++;
if (numberOfListenersChangedCallback != null) {
numberOfListenersChangedCallback.run();
}
}
public void unsubscribe(ListChangeListener<? super T> listener) {
synchronized public void unsubscribe(ListChangeListener<? super T> listener) {
super.removeListener(listener);
numberOfSubscribedListeners--;
if (numberOfListenersChangedCallback != null) {
numberOfListenersChangedCallback.run();
}
......
......@@ -5,8 +5,6 @@ import java.io.Closeable;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import cz.it4i.fiji.haas_spim_benchmark.core.BenchmarkJobManager.BenchmarkJob;
......@@ -17,6 +15,8 @@ class TaskObservableValueRegistry implements Closeable {
private Timer timer;
private boolean isRunning = false;
private boolean closed = false;
private boolean waitForFirstTimerRun = false;
private Thread waitingThread;
public TaskObservableValueRegistry(final BenchmarkJob job) {
this.job = job;
......@@ -24,8 +24,12 @@ class TaskObservableValueRegistry implements Closeable {
this::evaluateTimer);
}
//TODO close neverCalled
@Override
public synchronized void close() {
if (waitingThread != null) {
waitingThread.interrupt();
}
stopTimer();
closed = true;
}
......@@ -44,23 +48,30 @@ class TaskObservableValueRegistry implements Closeable {
if (!isRunning && anyListeners) {
final CountDownLatch timerLatch = new CountDownLatch(1);
timer = new Timer();
waitForFirstTimerRun = true;
timer.schedule(new TimerTask() {
@Override
public void run() {
observableTaskList.setAll(job.getTasks());
timerLatch.countDown();
synchronized(TaskObservableValueRegistry.this) {
waitForFirstTimerRun = false;
TaskObservableValueRegistry.this.notifyAll();
}
}
}, 0, Constants.HAAS_UPDATE_TIMEOUT /
Constants.UI_TO_HAAS_FREQUENCY_UPDATE_RATIO);
try {
timerLatch.await(10, TimeUnit.SECONDS);
}
catch (InterruptedException exc) {
// TODO Handle properly
while (waitForFirstTimerRun) {
try {
this.waitingThread = Thread.currentThread();
this.wait();
this.waitingThread = null;
}
catch (InterruptedException exc) {
//ignore and return
return;
}
}
isRunning = true;
}
......
......@@ -161,10 +161,6 @@ public class JobDetailControl extends TabPane implements CloseableControl,
}
}
taskListListener.onChanged(null);
errorOutputListener.changed(null, null, errorOutput.getValue());
standardOutputListener.changed(null, null, standardOutput.getValue());
setActiveFirstVisibleTab(true);
}
finally {
......
......@@ -109,11 +109,8 @@ public class SPIMPipelineProgressViewController extends BorderPane implements Cl
}
public void setObservable(final SimpleObservableList<Task> taskList) {
observedList = taskList;
observedList.subscribe(taskChangeListener);
taskChangeListener.onChanged(null);
}
private void init() {
......@@ -140,7 +137,7 @@ public class SPIMPipelineProgressViewController extends BorderPane implements Cl
if (closed || filled) {
return;
}
final Optional<List<TaskComputation>> optional = getComputations(
observedList);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment