From f116c7235d719a586765d65fca78e66a217f85c3 Mon Sep 17 00:00:00 2001 From: Roland Grunberg Date: Wed, 22 May 2013 11:07:24 -0400 Subject: [PATCH] Bug 400840 - Update 'Registers' view values when modified. Change-Id: I9539496e4a368721b0bb9b34789461cbd8167f6e Reviewed-on: https://git.eclipse.org/r/13084 Reviewed-by: Marc Khouzam IP-Clean: Marc Khouzam Tested-by: Marc Khouzam --- .../cdt/dsf/mi/service/MIRegisters.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRegisters.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRegisters.java index 2931117ad58..cb2cbd4d9b3 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRegisters.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRegisters.java @@ -8,6 +8,7 @@ * Contributors: * Wind River Systems - initial API and implementation * Ericsson - Modified for additional features in DSF Reference Implementation + * Roland Grunberg (RedHat) - Refresh all registers once one is changed (Bug 400840) *******************************************************************************/ package org.eclipse.cdt.dsf.mi.service; @@ -449,8 +450,25 @@ public class MIRegisters extends AbstractDsfService implements IRegisters, ICach fRegisterValueCache.reset(); } - private void generateRegisterChangedEvent(IRegisterDMContext dmc ) { + private void generateRegisterChangedEvent(final IRegisterDMContext dmc ) { getSession().dispatchEvent(new RegisterChangedDMEvent(dmc), getProperties()); + + // Temporary fix for Bug 400840 + // When one register is modified, it could affect other registers. + // To properly reflect that, we send a change for all registers. + // We cheat since we know there is currently only one group. Once we handle + // more groups, this may not work properly. + final IRegisterGroupDMContext groupDmc = DMContexts.getAncestorOfType(dmc, IRegisterGroupDMContext.class); + if (groupDmc != null) { + IRegistersChangedDMEvent event = new IRegistersChangedDMEvent() { + @Override + public IRegisterGroupDMContext getDMContext() { + return groupDmc; + } + }; + getSession().dispatchEvent(event, getProperties()); + } + } /*