Skip to content

Commit 61e36cd

Browse files
committed
Starts BigWarp edition of registration in EventQueue to avoid deadlock
1 parent 7c12d04 commit 61e36cd

File tree

1 file changed

+34
-23
lines changed

1 file changed

+34
-23
lines changed

Diff for: src/main/java/ch/epfl/biop/registration/sourceandconverter/spline/Elastix2DSplineRegistration.java

+34-23
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import sc.fiji.bdvpg.sourceandconverter.SourceAndConverterHelper;
2727
import sc.fiji.bdvpg.sourceandconverter.register.BigWarpLauncher;
2828

29+
import java.awt.EventQueue;
30+
import java.lang.reflect.InvocationTargetException;
2931
import java.util.*;
3032
import java.util.concurrent.Future;
3133
import java.util.stream.Collectors;
@@ -257,42 +259,51 @@ private RealTransform pruneLandMarksOutsideAtlas(RealTransform rt_in) {
257259
dialog.show();
258260
};
259261

262+
BigWarpLauncher bwl;
263+
260264
@Override
261265
public boolean edit() {
266+
try {
267+
EventQueue.invokeAndWait(() -> {
268+
List<SourceAndConverter<?>> movingSacs = Arrays.stream(mimg).collect(Collectors.toList());
262269

263-
List<SourceAndConverter<?>> movingSacs = Arrays.stream(mimg).collect(Collectors.toList());
264-
265-
List<SourceAndConverter<?>> fixedSacs = Arrays.stream(fimg).collect(Collectors.toList());
270+
List<SourceAndConverter<?>> fixedSacs = Arrays.stream(fimg).collect(Collectors.toList());
266271

267-
List<ConverterSetup> converterSetups = Arrays.stream(mimg).map(src -> SourceAndConverterServices.getSourceAndConverterService().getConverterSetup(src)).collect(Collectors.toList());
272+
List<ConverterSetup> converterSetups = Arrays.stream(mimg).map(src -> SourceAndConverterServices.getSourceAndConverterService().getConverterSetup(src)).collect(Collectors.toList());
268273

269-
converterSetups.addAll(Arrays.stream(fimg).map(src -> SourceAndConverterServices.getSourceAndConverterService().getConverterSetup(src)).collect(Collectors.toList()));
274+
converterSetups.addAll(Arrays.stream(fimg).map(src -> SourceAndConverterServices.getSourceAndConverterService().getConverterSetup(src)).collect(Collectors.toList()));
270275

271-
// Launch BigWarp
272-
BigWarpLauncher bwl = new BigWarpLauncher(movingSacs, fixedSacs, "Big Warp", converterSetups);
273-
bwl.set2d();
274-
bwl.run();
276+
// Launch BigWarp
277+
bwl = new BigWarpLauncher(movingSacs, fixedSacs, "Big Warp", converterSetups);
278+
bwl.set2d();
279+
bwl.run();
275280

276-
// Output bdvh handles -> will be put in the object service
277-
BdvHandle bdvhQ = bwl.getBdvHandleQ();
278-
BdvHandle bdvhP = bwl.getBdvHandleP();
281+
// Output bdvh handles -> will be put in the object service
282+
BdvHandle bdvhQ = bwl.getBdvHandleQ();
283+
BdvHandle bdvhP = bwl.getBdvHandleP();
279284

280-
bdvhP.getViewerPanel().state().setViewerTransform(BdvHandleHelper.getViewerTransformWithNewCenter(bdvhP, new double[]{0,0,0}));
281-
bdvhQ.getViewerPanel().state().setViewerTransform(BdvHandleHelper.getViewerTransformWithNewCenter(bdvhQ, new double[]{0,0,0}));
285+
bdvhP.getViewerPanel().state().setViewerTransform(BdvHandleHelper.getViewerTransformWithNewCenter(bdvhP, new double[]{0,0,0}));
286+
bdvhQ.getViewerPanel().state().setViewerTransform(BdvHandleHelper.getViewerTransformWithNewCenter(bdvhQ, new double[]{0,0,0}));
282287

283-
bdvhQ.getViewerPanel().state().setDisplayMode(DisplayMode.FUSED);
284-
bdvhP.getViewerPanel().state().setDisplayMode(DisplayMode.FUSED);
288+
bdvhQ.getViewerPanel().state().setDisplayMode(DisplayMode.FUSED);
289+
bdvhP.getViewerPanel().state().setDisplayMode(DisplayMode.FUSED);
285290

286-
SourceAndConverterServices.getBdvDisplayService().pairClosing(bdvhQ,bdvhP);
291+
SourceAndConverterServices.getBdvDisplayService().pairClosing(bdvhQ,bdvhP);
287292

288-
bdvhP.getViewerPanel().requestRepaint();
289-
bdvhQ.getViewerPanel().requestRepaint();
293+
bdvhP.getViewerPanel().requestRepaint();
294+
bdvhQ.getViewerPanel().requestRepaint();
290295

291-
bwl.getBigWarp().getLandmarkFrame().repaint();
296+
bwl.getBigWarp().getLandmarkFrame().repaint();
292297

293-
if (rt!=null) {
294-
bwl.getBigWarp().loadLandmarks(BigWarpFileFromRealTransform(rt));
295-
bwl.getBigWarp().setIsMovingDisplayTransformed(true);
298+
if (rt!=null) {
299+
bwl.getBigWarp().loadLandmarks(BigWarpFileFromRealTransform(rt));
300+
bwl.getBigWarp().setIsMovingDisplayTransformed(true);
301+
}
302+
});
303+
} catch (InterruptedException e) {
304+
throw new RuntimeException(e);
305+
} catch (InvocationTargetException e) {
306+
throw new RuntimeException(e);
296307
}
297308

298309
waitForUser.run();

0 commit comments

Comments
 (0)