1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-27 10:55:33 +02:00

[250414] - [update policy] Stale data displayed when variables, registers or expressions view was hidden

This commit is contained in:
Pawel Piech 2008-10-13 19:30:50 +00:00
parent 7fd71fdc14
commit 2d78ef8f37

View file

@ -148,6 +148,16 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
fPrevious.fNext = fNext; fPrevious.fNext = fNext;
fNext.fPrevious = fPrevious; fNext.fPrevious = fPrevious;
} }
void reinsert(Entry nextEntry) {
fPrevious.fNext = fNext;
fNext.fPrevious = fPrevious;
fNext = nextEntry;
fPrevious = nextEntry.fPrevious;
fPrevious.fNext = this;
fNext.fPrevious = this;
}
} }
/** /**
@ -728,18 +738,18 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
if (proxyStrategy instanceof IVMModelProxyExtension) { if (proxyStrategy instanceof IVMModelProxyExtension) {
IVMModelProxyExtension proxyStrategyExtension = (IVMModelProxyExtension)proxyStrategy; IVMModelProxyExtension proxyStrategyExtension = (IVMModelProxyExtension)proxyStrategy;
CountingRequestMonitor multiRm = new CountingRequestMonitor(getExecutor(), rm);
super.handleEvent(proxyStrategy, event, multiRm);
int rmCount = 1;
if(fDelayEventHandleForViewUpdate) { if(fDelayEventHandleForViewUpdate) {
if(this.getActiveUpdateScope().getID().equals(AllUpdateScope.ALL_UPDATE_SCOPE_ID)) { if(this.getActiveUpdateScope().getID().equals(AllUpdateScope.ALL_UPDATE_SCOPE_ID)) {
CountingRequestMonitor countingRm = new CountingRequestMonitor(getExecutor(), rm); new MultiLevelUpdateHandler(getExecutor(), proxyStrategyExtension, getPresentationContext(), this, multiRm).
countingRm.setDoneCount(2);
new MultiLevelUpdateHandler(getExecutor(), proxyStrategyExtension, getPresentationContext(), this, countingRm).
startUpdate(); startUpdate();
AbstractCachingVMProvider.super.handleEvent(proxyStrategy, event, countingRm); rmCount++;
} else { } else if (!proxyStrategy.isDisposed()) {
// block updating only the viewport // block updating only the viewport
CountingRequestMonitor countingRm = new CountingRequestMonitor(getExecutor(), rm);
countingRm.setDoneCount(2);
TreeViewer viewer = (TreeViewer) proxyStrategyExtension.getViewer(); TreeViewer viewer = (TreeViewer) proxyStrategyExtension.getViewer();
Tree tree = viewer.getTree(); Tree tree = viewer.getTree();
int count = tree.getSize().y / tree.getItemHeight(); int count = tree.getSize().y / tree.getItemHeight();
@ -748,26 +758,20 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
int index = computeTreeIndex(topItem); int index = computeTreeIndex(topItem);
MultiLevelUpdateHandler handler = new MultiLevelUpdateHandler( MultiLevelUpdateHandler handler = new MultiLevelUpdateHandler(
getExecutor(), proxyStrategyExtension, getPresentationContext(), this, countingRm); getExecutor(), proxyStrategyExtension, getPresentationContext(), this, multiRm);
handler.setRange(index, index + count); handler.setRange(index, index + count);
handler.startUpdate(); handler.startUpdate();
AbstractCachingVMProvider.super.handleEvent(proxyStrategy, event, countingRm); rmCount++;
} }
} else { } else {
if(this.getActiveUpdateScope().getID().equals(AllUpdateScope.ALL_UPDATE_SCOPE_ID)) if(this.getActiveUpdateScope().getID().equals(AllUpdateScope.ALL_UPDATE_SCOPE_ID)) {
{
final CountingRequestMonitor multiRm = new CountingRequestMonitor(getExecutor(), rm);
multiRm.setDoneCount(2);
MultiLevelUpdateHandler handler = new MultiLevelUpdateHandler( MultiLevelUpdateHandler handler = new MultiLevelUpdateHandler(
getExecutor(), proxyStrategyExtension, getPresentationContext(), this, multiRm); getExecutor(), proxyStrategyExtension, getPresentationContext(), this, multiRm);
handler.startUpdate(); handler.startUpdate();
rmCount++;
super.handleEvent(proxyStrategy, event, multiRm);
} else {
super.handleEvent(proxyStrategy, event, rm);
} }
} }
multiRm.setDoneCount(rmCount);
} else { } else {
super.handleEvent(proxyStrategy, event, rm); super.handleEvent(proxyStrategy, event, rm);
} }
@ -859,7 +863,7 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
} }
/** /**
* Convenience class that searches for teh root element for the given * Convenience class that searches for the root element for the given
* update and creates an element cache entry key. * update and creates an element cache entry key.
*/ */
private ElementDataKey makeEntryKey(IVMNode node, IViewerUpdate update) { private ElementDataKey makeEntryKey(IVMNode node, IViewerUpdate update) {
@ -896,8 +900,7 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
addEntry(key, entry); addEntry(key, entry);
} else { } else {
// Entry exists, move it to the end of the list. // Entry exists, move it to the end of the list.
entry.remove(); entry.reinsert(fCacheListHead);
entry.insert(fCacheListHead);
} }
// Update the root element marker: // Update the root element marker:
@ -914,8 +917,7 @@ public class AbstractCachingVMProvider extends AbstractVMProvider implements ICa
rootMarkerEntry = new RootElementMarkerEntry(rootMarker); rootMarkerEntry = new RootElementMarkerEntry(rootMarker);
addEntry(rootMarker, rootMarkerEntry); addEntry(rootMarker, rootMarkerEntry);
} else if (rootMarkerEntry.fNext != fCacheListHead) { } else if (rootMarkerEntry.fNext != fCacheListHead) {
rootMarkerEntry.remove(); rootMarkerEntry.reinsert(fCacheListHead);
rootMarkerEntry.insert(fCacheListHead);
} }
return entry; return entry;