From 5bd058f70161c5f70a7e744f61a3ce22ed1b5014 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Fri, 20 Sep 2002 20:05:27 +0000 Subject: [PATCH] Implementation of 'setCurrentThread' and 'switchToFrame' functions. --- .../cdt/debug/internal/core/model/CDebugTarget.java | 12 ++++++++++-- .../debug/internal/core/model/CRegisterGroup.java | 2 +- .../cdt/debug/internal/core/model/CThread.java | 12 ++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java index f2b705eec2a..58161da6bbd 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java @@ -1751,7 +1751,7 @@ public class CDebugTarget extends CDebugElement Iterator it = fRegisterGroups.iterator(); while( it.hasNext() ) { - ((CRegisterGroup)it.next()).preserve(); + ((CRegisterGroup)it.next()).resetChangeFlags(); } } @@ -1832,9 +1832,17 @@ public class CDebugTarget extends CDebugElement */ public void setCurrentThread( IThread thread ) throws DebugException { - if ( !isAvailable() ) + if ( !isAvailable() || thread == null || !(thread instanceof CThread) ) { return; } + try + { + getCDITarget().setCurrentThread( ((CThread)thread).getCDIThread() ); + } + catch( CDIException e ) + { + targetRequestFailed( e.getMessage(), null ); + } } } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java index dc236574ed6..d606b8cab2e 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java @@ -151,7 +151,7 @@ public class CRegisterGroup extends CDebugElement implements IRegisterGroup } } - protected void preserve() + protected void resetChangeFlags() { if ( fRegisters == null ) return; diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java index 72c539940b7..e4107739e3e 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java @@ -963,5 +963,17 @@ public class CThread extends CDebugElement */ public void switchToFrame( IStackFrame frame ) throws DebugException { + if ( frame == null && !(frame instanceof CStackFrame) ) + { + return; + } + try + { + getCDIThread().setCurrentStackFrame( ((CStackFrame)frame).getCDIStackFrame() ); + } + catch( CDIException e ) + { + targetRequestFailed( e.getMessage(), null ); + } } }