diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog index d37458036da..0c4e46c3857 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog @@ -1,3 +1,8 @@ +2005-11-29 Mikhail Khodjaiants + Bug 100298: [Memory View] Changing variable's value from variables view or memory view doesn't sync to each other. + * cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java + * cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java + 2005-11-02 Mikhail Khodjaiants Bug 113364: Wrong values displaying an array of structures. Previous fix didn't work for classes with access specifiers. diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java index 3c7c92d61e0..34f2c36f722 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/MemoryBlock.java @@ -19,9 +19,12 @@ import org.eclipse.cdt.debug.mi.core.MIException; import org.eclipse.cdt.debug.mi.core.MIFormat; import org.eclipse.cdt.debug.mi.core.MISession; import org.eclipse.cdt.debug.mi.core.cdi.CdiResources; +import org.eclipse.cdt.debug.mi.core.cdi.ExpressionManager; import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException; import org.eclipse.cdt.debug.mi.core.cdi.MemoryManager; +import org.eclipse.cdt.debug.mi.core.cdi.RegisterManager; import org.eclipse.cdt.debug.mi.core.cdi.Session; +import org.eclipse.cdt.debug.mi.core.cdi.VariableManager; import org.eclipse.cdt.debug.mi.core.command.CommandFactory; import org.eclipse.cdt.debug.mi.core.command.MIDataWriteMemory; import org.eclipse.cdt.debug.mi.core.output.MIDataReadMemoryInfo; @@ -270,6 +273,26 @@ public class MemoryBlock extends CObject implements ICDIMemoryBlock { } // If the assign was succesfull fire a MIChangedEvent() via refresh. refresh(); + + Target target = (Target)getTarget(); + + // If register manager is on autoupdate, update all registers + RegisterManager regMgr = ((Session)target.getSession()).getRegisterManager(); + if (regMgr.isAutoUpdate()) { + regMgr.update(target); + } + + // If expression manager is on autoupdate, update all expressions + ExpressionManager expMgr = ((Session)target.getSession()).getExpressionManager(); + if (expMgr.isAutoUpdate()) { + expMgr.update(target); + } + + // If variable manager is on autoupdate, update all variables. + VariableManager varMgr = ((Session)target.getSession()).getVariableManager(); + if (varMgr.isAutoUpdate()) { + varMgr.update(target); + } } /* (non-Javadoc) diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java index 48129d47454..19122ec5630 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java @@ -37,6 +37,7 @@ import org.eclipse.cdt.debug.mi.core.cdi.CdiResources; import org.eclipse.cdt.debug.mi.core.cdi.ExpressionManager; import org.eclipse.cdt.debug.mi.core.cdi.Format; import org.eclipse.cdt.debug.mi.core.cdi.MI2CDIException; +import org.eclipse.cdt.debug.mi.core.cdi.MemoryManager; import org.eclipse.cdt.debug.mi.core.cdi.RegisterManager; import org.eclipse.cdt.debug.mi.core.cdi.Session; import org.eclipse.cdt.debug.mi.core.cdi.VariableManager; @@ -402,17 +403,23 @@ public abstract class Variable extends VariableDescriptor implements ICDIVariabl regMgr.update(target); } - // If expression was on autoupdate, update all the other expression + // If expression manager is on autoupdate, update all expressions ExpressionManager expMgr = ((Session)target.getSession()).getExpressionManager(); if (expMgr.isAutoUpdate()) { expMgr.update(target); } - // If variable was on autoupdate, update all the variables. + // If variable manager is on autoupdate, update all variables VariableManager varMgr = ((Session)target.getSession()).getVariableManager(); if (varMgr.isAutoUpdate()) { varMgr.update(target); } + + // If memory manager is on autoupdate, update all memory blocks + MemoryManager memMgr = ((Session)target.getSession()).getMemoryManager(); + if (memMgr.isAutoUpdate()) { + memMgr.update(target); + } } /**