Skip to content

Commit 149771e

Browse files
committed
Properly shutdown BlenderColtroller and it's Listeners
1 parent b659d24 commit 149771e

2 files changed

Lines changed: 37 additions & 7 deletions

File tree

mastodon-plugin/src/main/java/org/mastodon/blender/BlenderController.java

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,14 @@
1111
import org.mastodon.mamut.model.ModelGraph;
1212
import org.mastodon.mamut.model.Spot;
1313
import org.mastodon.model.AutoNavigateFocusModel;
14+
import org.mastodon.model.FocusListener;
1415
import org.mastodon.model.FocusModel;
1516
import org.mastodon.model.NavigationHandler;
1617
import org.mastodon.model.SelectionModel;
18+
import org.mastodon.model.TimepointListener;
1719
import org.mastodon.model.TimepointModel;
1820
import org.mastodon.model.tag.ObjTagMap;
21+
import org.mastodon.model.tag.TagSetModel;
1922
import org.mastodon.model.tag.TagSetStructure;
2023
import org.scijava.Context;
2124

@@ -36,12 +39,16 @@ public class BlenderController
3639

3740
private final GroupHandle groupHandle;
3841

39-
private final NavigationHandler<Spot, Link> navigationModel;
40-
4142
private final FocusModel<Spot, Link> focusModel;
4243

4344
private final TimepointModel timePointModel;
4445

46+
private final FocusListener focusListener = this::onFocusModelEvent;
47+
48+
private final TimepointListener timepointListener = this::onTimepointModelEvent;
49+
50+
private final TagSetModel.TagSetModelListener tagSetModelListener = this::sendTagSetList;
51+
4552
private TagSetStructure.TagSet tagSet;
4653

4754
private int knownTimepoint = 0;
@@ -53,7 +60,7 @@ public BlenderController( Context context, MamutAppModel appModel ) {
5360
this.model = appModel.getModel();
5461
this.groupHandle = appModel.getGroupManager().createGroupHandle();
5562
this.groupHandle.setGroupId( -1 );
56-
this.navigationModel = groupHandle.getModel( appModel.NAVIGATION );
63+
NavigationHandler<Spot, Link> navigationModel = groupHandle.getModel( appModel.NAVIGATION );
5764
this.focusModel = new AutoNavigateFocusModel<>( appModel.getFocusModel(), navigationModel );
5865
this.timePointModel = groupHandle.getModel( appModel.TIMEPOINT );
5966
this.client = new ViewServiceClient( context, new ViewServiceListener() );
@@ -62,12 +69,24 @@ public BlenderController( Context context, MamutAppModel appModel ) {
6269
sendTagSetList();
6370
triggerRepaint();
6471
client.subscribeToChangeEvents();
65-
focusModel.listeners().add( this::onFocusModelEvent );
66-
timePointModel.listeners().add( this::onTimepointModelEvent );
67-
model.getTagSetModel().listeners().add( this::sendTagSetList );
72+
subscribeListeners();
6873
//MastodonUtils.logMastodonEvents(appModel);
6974
}
7075

76+
private void subscribeListeners()
77+
{
78+
focusModel.listeners().add( focusListener );
79+
timePointModel.listeners().add( timepointListener );
80+
model.getTagSetModel().listeners().add( tagSetModelListener );
81+
}
82+
83+
private void unsubscribeListeners()
84+
{
85+
focusModel.listeners().remove( focusListener );
86+
timePointModel.listeners().remove( timepointListener );
87+
model.getTagSetModel().listeners().remove( tagSetModelListener );
88+
}
89+
7190
private void onFocusModelEvent()
7291
{
7392
ModelGraph graph = model.getGraph();
@@ -227,5 +246,11 @@ public void onSelectedTagSetChanged()
227246
tagSet = client.receiveTagSet(model.getTagSetModel().getTagSetStructure());
228247
sendColors();
229248
}
249+
250+
@Override
251+
public void onConnectionLost()
252+
{
253+
unsubscribeListeners();
254+
}
230255
}
231256
}

mastodon-plugin/src/main/java/org/mastodon/blender/ViewServiceClient.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,10 @@ public void onNext( ChangeMessage changeMessage )
233233
public void onError( Throwable throwable )
234234
{
235235
if( isUnavailableException( throwable ) )
236-
System.out.println( "Connection to Blender is lost.");
236+
{
237+
System.out.println( "Connection to Blender is lost." );
238+
listener.onConnectionLost();
239+
}
237240
else
238241
throwable.printStackTrace();
239242
}
@@ -286,5 +289,7 @@ public interface Listener {
286289
void onUpdateColorsRequest();
287290

288291
void onSelectedTagSetChanged();
292+
293+
void onConnectionLost();
289294
}
290295
}

0 commit comments

Comments
 (0)