From 36a98e3c9c50a9b8dce0924080bceba7ff722f04 Mon Sep 17 00:00:00 2001 From: robekras Date: Tue, 29 Aug 2006 12:38:07 +0000 Subject: [PATCH] 1) Fire 'Terminate' event on every thread on script termination. Fixes bug #1548528. --- .../internal/debug/core/model/PHPDebugTarget.java | 12 ++++++++++++ .../phpdt/internal/debug/core/model/PHPThread.java | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) 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 afce149..6ac564e 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 @@ -168,6 +168,17 @@ public class PHPDebugTarget extends PHPDebugElement implements IPHPDebugTarget, public synchronized boolean isTerminated() { return state.isTerminated(); } + + private synchronized void terminateThreads () { + int i; + + try { + for (i = 0; i < threads.length; i++) { + threads[i].terminate (); + } + } catch (DebugException e) { + } + } public synchronized void terminate() { // This method is synchronized to control a race condition between the @@ -178,6 +189,7 @@ public class PHPDebugTarget extends PHPDebugElement implements IPHPDebugTarget, return; state.setTerminated(true); phpDBGProxy.stop(); + terminateThreads (); this.threads = new PHPThread[0]; fireChangeEvent(); IBreakpointManager manager = DebugPlugin.getDefault() diff --git a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPThread.java b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPThread.java index 94feaf9..fefd85e 100644 --- a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPThread.java +++ b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/model/PHPThread.java @@ -301,6 +301,7 @@ public class PHPThread extends PHPDebugElement implements IThread { state.setTerminated (true); this.frames = null; getDebugTarget ().terminate (); + fireTerminateEvent (); } /** @@ -334,8 +335,7 @@ public class PHPThread extends PHPDebugElement implements IThread { } }; } - - return null; + return super.getAdapter(arg0); } /** -- 1.7.1