1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-17 22:15:23 +02:00

[229674] - [view model] Assertion error in DefaultVMContentProviderStrategy.updateChildrenWithCounts

This commit is contained in:
Pawel Piech 2008-05-02 23:47:55 +00:00
parent 6d882f8fb7
commit 1d77fd5491

View file

@ -16,6 +16,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import org.eclipse.dd.dsf.concurrent.ConfinedToDsfExecutor; 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.DataRequestMonitor;
import org.eclipse.dd.dsf.concurrent.MultiRequestMonitor; import org.eclipse.dd.dsf.concurrent.MultiRequestMonitor;
import org.eclipse.dd.dsf.concurrent.RequestMonitor; 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) { private void updateChildrenWithCounts(final IChildrenUpdate update, IVMNode node, Integer[] nodeElementCounts) {
// Create the multi request monitor to mark update when querying all // Create the multi request monitor to mark update when querying all
// children nodes is finished. // children nodes is finished.
final MultiRequestMonitor<RequestMonitor> elementsMultiRequestMon = CountingRequestMonitor multiRm = new CountingRequestMonitor(getVMProvider().getExecutor(), null) {
new MultiRequestMonitor<RequestMonitor>(getVMProvider().getExecutor(), null) {
@Override @Override
protected void handleCompleted() { protected void handleCompleted() {
update.done(); update.done();
} }
}; };
int multiRmCount = 0;
// Iterate through all child nodes and if requested range matches, call them to // Iterate through all child nodes and if requested range matches, call them to
// get their elements. // get their elements.
@ -316,7 +317,7 @@ public class DefaultVMContentProviderStrategy implements IElementContentProvider
nodes[i], nodes[i],
new VMChildrenUpdate( new VMChildrenUpdate(
update, elementsStartIdx, elementsLength, update, elementsStartIdx, elementsLength,
elementsMultiRequestMon.add(new DataRequestMonitor<List<Object>>(getVMProvider().getExecutor(), null) { new DataRequestMonitor<List<Object>>(getVMProvider().getExecutor(), multiRm) {
@Override @Override
protected void handleCompleted() { protected void handleCompleted() {
// Workaround for a bug caused by an optimization in the viewer: // 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. // Guard against invalid queries.
assert !elementsMultiRequestMon.getRequestMonitors().isEmpty(); multiRm.setDoneCount(multiRmCount);
} }
/** /**