X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPStackFrame.java b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPStackFrame.java index 1c5dcdd..dcd372e 100644 --- a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPStackFrame.java +++ b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPStackFrame.java @@ -41,7 +41,10 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa private PHPVariable[] variables; // The array of variables TODO: better introduce a vector? private Vector varList = new Vector (); private String description; // The source file name with the full path on target/remote system - private boolean fUpToDate; // + private boolean fUpToDate; // Indicates whether the variable list within this stackframe is + // up-to-date + private boolean fAvailable; // Needed when updating the stackframe list, shows whether the stackframe + // is within the list which was received from dbg /** * @@ -111,6 +114,32 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa /** * + */ + public void setAvailable (boolean available) { + fAvailable = available; + } + + /** + * + */ + public boolean isAvailable () { + return fAvailable; + } + + + /** + * @see IAdaptable#getAdapter(Class) + */ + public Object getAdapter(Class adapter) { + if (adapter == PHPStackFrame.class) { + return this; + } + + return super.getAdapter(adapter); + } + + /** + * * */ private void resetHasChangedInfo (Vector varList) { @@ -279,11 +308,6 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa * @return The array of PHPVariables for this stackframe. */ public IVariable[] getVariables() throws DebugException { - PHPVariable[] variablesNew; // The intermediate storage of the variable array we get from DBG proxy - - //variablesNew = this.getPHPDBGProxy ().readVariables (this); // Get the variable array from DBG proxy - //variables = variablesNew; // Store the array the stackframes member variable - if (!isUpToDate ()) { resetHasChangedInfo (varList); updateVariableList (varList, this.getPHPDBGProxy ().readVariables (this)); @@ -352,7 +376,8 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa * */ public boolean hasVariables () throws DebugException { - return (varList.size () > 0); + return true; + // return (varList.size () > 0); } public int getLineNumber() { @@ -448,9 +473,16 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa thread.prepareForResume (DebugEvent.STEP_INTO); // Don't know why, but this is necessary this.getPHPDBGProxy ().readStepIntoEnd (PHPStackFrame.this); - - ev = new DebugEvent (this.getThread (), DebugEvent.RESUME, DebugEvent.STEP_INTO); - DebugPlugin.getDefault().fireDebugEventSet (new DebugEvent[] { ev }); + + // Commented out sending the RESUME event because it was already sent by prepareForResume. + // The second RESUME event leads only to a little flickering within the variables view. + // It is also not clear why this event was necessary in eclipse < 3.2 + // Also sending a SUSPEND event here leads to a total rebuild of the variables view. + // (eclipse 3.2 has a build in timeout of 500 ms which leads to a auto suspend, with + // no flickering... but why???) + // + //ev = new DebugEvent (this.getThread (), DebugEvent.RESUME, DebugEvent.STEP_INTO); + //DebugPlugin.getDefault().fireDebugEventSet (new DebugEvent[] { ev }); } /** @@ -464,8 +496,10 @@ public class PHPStackFrame extends PHPDebugElement implements IStackFrame, Compa thread.prepareForResume (DebugEvent.STEP_OVER); this.getPHPDBGProxy ().readStepOverEnd (PHPStackFrame.this) ; - ev = new DebugEvent (this.getThread (), DebugEvent.RESUME, DebugEvent.STEP_OVER); - DebugPlugin.getDefault ().fireDebugEventSet (new DebugEvent[] { ev }); + // See comment within the previous stepInto method. + // + //ev = new DebugEvent (this.getThread (), DebugEvent.RESUME, DebugEvent.STEP_OVER); + //DebugPlugin.getDefault ().fireDebugEventSet (new DebugEvent[] { ev }); } /**