X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPDebugTarget.java b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPDebugTarget.java index 9e5dfb8..d5e58f6 100644 --- a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPDebugTarget.java +++ b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPDebugTarget.java @@ -11,6 +11,9 @@ Contributors: **********************************************************************/ package net.sourceforge.phpdt.internal.debug.core.model; +import net.sourceforge.phpdt.internal.debug.core.PHPDBGProxy; +import net.sourceforge.phpdt.internal.debug.core.PHPDebugCorePlugin; + import org.eclipse.core.resources.IMarkerDelta; import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugException; @@ -19,15 +22,12 @@ import org.eclipse.debug.core.IBreakpointManager; import org.eclipse.debug.core.IDebugEventSetListener; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchListener; -import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.core.model.IBreakpoint; +import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.core.model.IMemoryBlock; import org.eclipse.debug.core.model.IProcess; import org.eclipse.debug.core.model.IThread; -import net.sourceforge.phpdt.internal.debug.core.PHPDebugCorePlugin; -import net.sourceforge.phpdt.internal.debug.core.PHPDBGProxy; - /** * Debug target for PHP debug model. */ @@ -96,6 +96,9 @@ public class PHPDebugTarget implements IPHPDebugTarget, ILaunchListener, IDebugE } public boolean supportsBreakpoint(IBreakpoint arg0) { + if(arg0.getModelIdentifier().equals(PHPDebugCorePlugin.PLUGIN_ID)) { + return true; + } return false; } @@ -119,7 +122,13 @@ public class PHPDebugTarget implements IPHPDebugTarget, ILaunchListener, IDebugE return isTerminated; } - public void terminate() { + public synchronized void terminate() { + // This method is synchronized to control a race condition between the + // UI thread that terminates the debugging session, and the slave + // thread that executes PHPLoop.run + if (isTerminated) + // Avoid terminating twice... + return; phpDBGProxy.stop(); this.threads = new PHPThread[0]; isTerminated = true;