mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-03 07:05:24 +02:00
[229674] - [view model] Assertion error in DefaultVMContentProviderStrategy.updateChildrenWithCounts
This commit is contained in:
parent
6d882f8fb7
commit
1d77fd5491
1 changed files with 13 additions and 11 deletions
|
@ -16,6 +16,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
|
||||
import org.eclipse.dd.dsf.concurrent.ConfinedToDsfExecutor;
|
||||
import org.eclipse.dd.dsf.concurrent.CountingRequestMonitor;
|
||||
import org.eclipse.dd.dsf.concurrent.DataRequestMonitor;
|
||||
import org.eclipse.dd.dsf.concurrent.MultiRequestMonitor;
|
||||
import org.eclipse.dd.dsf.concurrent.RequestMonitor;
|
||||
|
@ -287,13 +288,13 @@ public class DefaultVMContentProviderStrategy implements IElementContentProvider
|
|||
private void updateChildrenWithCounts(final IChildrenUpdate update, IVMNode node, Integer[] nodeElementCounts) {
|
||||
// Create the multi request monitor to mark update when querying all
|
||||
// children nodes is finished.
|
||||
final MultiRequestMonitor<RequestMonitor> elementsMultiRequestMon =
|
||||
new MultiRequestMonitor<RequestMonitor>(getVMProvider().getExecutor(), null) {
|
||||
@Override
|
||||
protected void handleCompleted() {
|
||||
update.done();
|
||||
}
|
||||
};
|
||||
CountingRequestMonitor multiRm = new CountingRequestMonitor(getVMProvider().getExecutor(), null) {
|
||||
@Override
|
||||
protected void handleCompleted() {
|
||||
update.done();
|
||||
}
|
||||
};
|
||||
int multiRmCount = 0;
|
||||
|
||||
// Iterate through all child nodes and if requested range matches, call them to
|
||||
// get their elements.
|
||||
|
@ -316,7 +317,7 @@ public class DefaultVMContentProviderStrategy implements IElementContentProvider
|
|||
nodes[i],
|
||||
new VMChildrenUpdate(
|
||||
update, elementsStartIdx, elementsLength,
|
||||
elementsMultiRequestMon.add(new DataRequestMonitor<List<Object>>(getVMProvider().getExecutor(), null) {
|
||||
new DataRequestMonitor<List<Object>>(getVMProvider().getExecutor(), multiRm) {
|
||||
@Override
|
||||
protected void handleCompleted() {
|
||||
// Workaround for a bug caused by an optimization in the viewer:
|
||||
|
@ -332,16 +333,17 @@ public class DefaultVMContentProviderStrategy implements IElementContentProvider
|
|||
}
|
||||
}
|
||||
}
|
||||
elementsMultiRequestMon.requestMonitorDone(this);
|
||||
super.handleCompleted();
|
||||
}
|
||||
}))
|
||||
})
|
||||
);
|
||||
multiRmCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Guard against invalid queries.
|
||||
assert !elementsMultiRequestMon.getRequestMonitors().isEmpty();
|
||||
multiRm.setDoneCount(multiRmCount);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue