* Fixes #2655: Actually remove an ICellContainer before updating the list. * Fixes #2276: Apply tracker changes in the correct order.
This commit is contained in:
parent
887339f7b8
commit
d11d6e754f
1 changed files with 16 additions and 8 deletions
|
@ -87,15 +87,19 @@ public class GridStorageCache implements IStorageGrid
|
|||
if( machine instanceof ICellContainer )
|
||||
{
|
||||
final ICellContainer cc = (ICellContainer) machine;
|
||||
final CellChangeTracker tracker = new CellChangeTracker();
|
||||
|
||||
this.getGrid().postEvent( new MENetworkCellArrayUpdate() );
|
||||
this.removeCellProvider( cc, new CellChangeTracker() ).applyChanges();
|
||||
this.inactiveCellProviders.remove( cc );
|
||||
this.removeCellProvider( cc, tracker );
|
||||
this.getGrid().postEvent( new MENetworkCellArrayUpdate() );
|
||||
|
||||
tracker.applyChanges();
|
||||
}
|
||||
|
||||
if( machine instanceof IStackWatcherHost )
|
||||
{
|
||||
final IStackWatcher myWatcher = this.watchers.get( machine );
|
||||
|
||||
if( myWatcher != null )
|
||||
{
|
||||
myWatcher.clear();
|
||||
|
@ -113,9 +117,13 @@ public class GridStorageCache implements IStorageGrid
|
|||
this.inactiveCellProviders.add( cc );
|
||||
|
||||
this.getGrid().postEvent( new MENetworkCellArrayUpdate() );
|
||||
|
||||
if( node.isActive() )
|
||||
{
|
||||
this.addCellProvider( cc, new CellChangeTracker() ).applyChanges();
|
||||
final CellChangeTracker tracker = new CellChangeTracker();
|
||||
|
||||
this.addCellProvider( cc, tracker );
|
||||
tracker.applyChanges();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -177,10 +185,10 @@ public class GridStorageCache implements IStorageGrid
|
|||
{
|
||||
if( this.activeCellProviders.contains( cc ) )
|
||||
{
|
||||
this.inactiveCellProviders.add( cc );
|
||||
this.activeCellProviders.remove( cc );
|
||||
|
||||
BaseActionSource actionSrc = new BaseActionSource();
|
||||
|
||||
if( cc instanceof IActionHost )
|
||||
{
|
||||
actionSrc = new MachineSource( (IActionHost) cc );
|
||||
|
@ -214,22 +222,22 @@ public class GridStorageCache implements IStorageGrid
|
|||
|
||||
for( final ICellProvider cc : ll )
|
||||
{
|
||||
boolean Active = true;
|
||||
boolean active = true;
|
||||
|
||||
if( cc instanceof IActionHost )
|
||||
{
|
||||
final IGridNode node = ( (IActionHost) cc ).getActionableNode();
|
||||
if( node != null && node.isActive() )
|
||||
{
|
||||
Active = true;
|
||||
active = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Active = false;
|
||||
active = false;
|
||||
}
|
||||
}
|
||||
|
||||
if( Active )
|
||||
if( active )
|
||||
{
|
||||
this.addCellProvider( cc, tracker );
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue