1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 09:46:02 +02:00

Bug 379317 - SimpleDisplayExecutable posts runnables as separate UI event queue elements

Updated the performance test to better simulate debuggers' view model.
This commit is contained in:
Pawel Piech 2012-05-14 14:27:04 -07:00
parent 03d1253f68
commit b83750eae0
2 changed files with 67 additions and 32 deletions

View file

@ -15,7 +15,6 @@ import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
import org.eclipse.cdt.dsf.concurrent.RequestMonitor; import org.eclipse.cdt.dsf.concurrent.RequestMonitor;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.FormattedValueLabelText; import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.FormattedValueLabelText;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMNode; import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMNode;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.IRootVMNode; import org.eclipse.cdt.dsf.ui.viewmodel.IRootVMNode;
import org.eclipse.cdt.dsf.ui.viewmodel.VMDelta; import org.eclipse.cdt.dsf.ui.viewmodel.VMDelta;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider; import org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider;
@ -60,11 +59,18 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
fLabelProvider.update(updates); fLabelProvider.update(updates);
} }
public TestModelVMNode(AbstractVMProvider provider) { public TestModelVMNode(TestModelVMProvider provider) {
super(provider); super(provider);
} }
public void update(IHasChildrenUpdate[] updates) { private TestModelVMProvider getTestProvider() {
return (TestModelVMProvider)getVMProvider();
}
public void update(final IHasChildrenUpdate[] updates) {
getTestProvider().getDsfExecutor().execute(new Runnable() {
public void run() {
for (IHasChildrenUpdate update : updates) { for (IHasChildrenUpdate update : updates) {
if (update.getElement() instanceof TestElementVMContext) { if (update.getElement() instanceof TestElementVMContext) {
TestElement element = ((TestElementVMContext)update.getElement()).getElement(); TestElement element = ((TestElementVMContext)update.getElement()).getElement();
@ -73,8 +79,12 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
update.done(); update.done();
} }
} }
});
}
public void update(IChildrenCountUpdate[] updates) { public void update(final IChildrenCountUpdate[] updates) {
getTestProvider().getDsfExecutor().execute(new Runnable() {
public void run() {
for (IChildrenCountUpdate update : updates) { for (IChildrenCountUpdate update : updates) {
if (update.getElement() instanceof TestElementVMContext) { if (update.getElement() instanceof TestElementVMContext) {
TestElement element = ((TestElementVMContext)update.getElement()).getElement(); TestElement element = ((TestElementVMContext)update.getElement()).getElement();
@ -83,8 +93,12 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
update.done(); update.done();
} }
} }
});
}
public void update(IChildrenUpdate[] updates) { public void update(final IChildrenUpdate[] updates) {
getTestProvider().getDsfExecutor().execute(new Runnable() {
public void run() {
for (IChildrenUpdate update : updates) { for (IChildrenUpdate update : updates) {
if (update.getElement() instanceof TestElementVMContext) { if (update.getElement() instanceof TestElementVMContext) {
TestElement element = ((TestElementVMContext)update.getElement()).getElement(); TestElement element = ((TestElementVMContext)update.getElement()).getElement();
@ -93,8 +107,12 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
update.done(); update.done();
} }
} }
});
}
public void update(IPropertiesUpdate[] updates) { public void update(final IPropertiesUpdate[] updates) {
getTestProvider().getDsfExecutor().execute(new Runnable() {
public void run() {
for (IPropertiesUpdate update : updates) { for (IPropertiesUpdate update : updates) {
if (update.getElement() instanceof TestElementVMContext) { if (update.getElement() instanceof TestElementVMContext) {
TestElement element = ((TestElementVMContext)update.getElement()).getElement(); TestElement element = ((TestElementVMContext)update.getElement()).getElement();
@ -103,6 +121,8 @@ public class TestModelVMNode extends AbstractVMNode implements IRootVMNode, IEle
update.done(); update.done();
} }
} }
});
}
private void fillUpdateWithTestElements(IChildrenUpdate update, TestElement[] elements) { private void fillUpdateWithTestElements(IChildrenUpdate update, TestElement[] elements) {
int updateIdx = update.getOffset() != -1 ? update.getOffset() : 0; int updateIdx = update.getOffset() != -1 ? update.getOffset() : 0;

View file

@ -10,6 +10,8 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.tests.dsf.vm; package org.eclipse.cdt.tests.dsf.vm;
import org.eclipse.cdt.dsf.concurrent.DefaultDsfExecutor;
import org.eclipse.cdt.dsf.concurrent.DsfExecutor;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMAdapter; import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMAdapter;
import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMProvider; import org.eclipse.cdt.dsf.ui.viewmodel.AbstractVMProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.IVMModelProxy; import org.eclipse.cdt.dsf.ui.viewmodel.IVMModelProxy;
@ -23,13 +25,26 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
*/ */
public class TestModelVMProvider extends AbstractVMProvider { public class TestModelVMProvider extends AbstractVMProvider {
private DsfExecutor fDsfExecutor;
public TestModelVMProvider(AbstractVMAdapter adapter, IPresentationContext context) { public TestModelVMProvider(AbstractVMAdapter adapter, IPresentationContext context) {
super(adapter, context); super(adapter, context);
fDsfExecutor = new DefaultDsfExecutor("TestModelVMProvider");
setRootNode(new TestModelVMNode(this)); setRootNode(new TestModelVMNode(this));
addChildNodes(getRootVMNode(), new IVMNode[] { getRootVMNode() }); addChildNodes(getRootVMNode(), new IVMNode[] { getRootVMNode() });
} }
@Override
public void dispose() {
super.dispose();
fDsfExecutor.shutdown();
}
public DsfExecutor getDsfExecutor() {
return fDsfExecutor;
}
public TestElementVMContext getElementVMContext(IPresentationContext context, TestElement element) { public TestElementVMContext getElementVMContext(IPresentationContext context, TestElement element) {
return ((TestModelVMNode)getRootVMNode()).createVMContext(element); return ((TestModelVMNode)getRootVMNode()).createVMContext(element);