diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java index 77953dbc82f..839a9f3d682 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java @@ -52,6 +52,7 @@ import org.eclipse.cdt.debug.mi.core.event.MIRunningEvent; import org.eclipse.cdt.debug.mi.core.event.MISharedLibChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MISharedLibCreatedEvent; import org.eclipse.cdt.debug.mi.core.event.MISharedLibUnloadedEvent; +import org.eclipse.cdt.debug.mi.core.event.MISignalChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MIStoppedEvent; import org.eclipse.cdt.debug.mi.core.event.MIThreadCreatedEvent; import org.eclipse.cdt.debug.mi.core.event.MIThreadExitEvent; @@ -115,12 +116,25 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs // Something change we do not know what // Let the breakpoint manager handle it with an update(). try { - ((BreakpointManager)(session.getBreakpointManager())).update(); + session.getBreakpointManager().update(); } catch (CDIException e) { } } } else if (miEvent instanceof MISharedLibChangedEvent) { cdiList.add(new ChangedEvent(session, (MISharedLibChangedEvent)miEvent)); + } else if (miEvent instanceof MISignalChangedEvent) { + MISignalChangedEvent sig = (MISignalChangedEvent)miEvent; + String name = sig.getName(); + if (name == null || name.length() == 0) { + // Something change we do not know what + // Let the signal manager handle it with an update(). + try { + session.getSignalManager().update(); + } catch (CDIException e) { + } + } else { + cdiList.add(new ChangedEvent(session, sig)); + } } } else if (miEvent instanceof MIDestroyedEvent) { if (miEvent instanceof MIThreadExitEvent) { @@ -139,7 +153,7 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs // Something was deleted we do not know what // Let the breakpoint manager handle it with an update(). try { - ((BreakpointManager)(session.getBreakpointManager())).update(); + session.getBreakpointManager().update(); } catch (CDIException e) { } } @@ -155,7 +169,7 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs // Something created we do not know what // Let the breakpoint manager handle it with an update(). try { - ((BreakpointManager)(session.getBreakpointManager())).update(); + session.getBreakpointManager().update(); } catch (CDIException e) { } } diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java index d7f44966220..000c333b54b 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/event/ChangedEvent.java @@ -9,11 +9,13 @@ import org.eclipse.cdt.debug.core.cdi.event.ICDIChangedEvent; import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint; import org.eclipse.cdt.debug.core.cdi.model.ICDIObject; import org.eclipse.cdt.debug.core.cdi.model.ICDISharedLibrary; +import org.eclipse.cdt.debug.core.cdi.model.ICDISignal; import org.eclipse.cdt.debug.mi.core.cdi.BreakpointManager; import org.eclipse.cdt.debug.mi.core.cdi.ExpressionManager; 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.SharedLibraryManager; +import org.eclipse.cdt.debug.mi.core.cdi.SignalManager; import org.eclipse.cdt.debug.mi.core.cdi.VariableManager; import org.eclipse.cdt.debug.mi.core.cdi.model.CObject; import org.eclipse.cdt.debug.mi.core.cdi.model.Expression; @@ -22,6 +24,7 @@ import org.eclipse.cdt.debug.mi.core.cdi.model.Variable; import org.eclipse.cdt.debug.mi.core.event.MIBreakpointChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MISharedLibChangedEvent; +import org.eclipse.cdt.debug.mi.core.event.MISignalChangedEvent; import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent; /** @@ -89,6 +92,18 @@ public class ChangedEvent implements ICDIChangedEvent { } } + public ChangedEvent(Session s, MISignalChangedEvent sig) { + session = s; + SignalManager mgr = (SignalManager)session.getSignalManager(); + String name = sig.getName(); + ICDISignal signal = mgr.getSignal(name); + if (signal != null) { + source = signal; + } else { + source = new CObject(session.getCurrentTarget()); + } + } + public ChangedEvent(Session s, ICDIObject src) { session = s; source = src;