Proposed fix for  Bug 322928 -  per thread deactivation & activation fails to establish global activation.
diff --git a/plugins/org.eclipse.objectteams.otequinox/META-INF/MANIFEST.MF b/plugins/org.eclipse.objectteams.otequinox/META-INF/MANIFEST.MF
index 97b5273..cf054ce 100644
--- a/plugins/org.eclipse.objectteams.otequinox/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.objectteams.otequinox/META-INF/MANIFEST.MF
@@ -2,11 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.objectteams.otequinox;singleton:=true
-Bundle-Version: 0.7.0.qualifier
+Bundle-Version: 0.7.1.qualifier
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.equinox.common,
  org.eclipse.equinox.registry,
+ org.eclipse.core.jobs,
  org.eclipse.osgi;bundle-version="[3.6.0.v20090928,4.0.0)",
  org.objectweb.asm;bundle-version="[3.1.0,4.0.0)",
  org.eclipse.objectteams.runtime;bundle-version="[0.7.0,0.8.0)";visibility:=reexport
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/otequinox/TransformerPlugin.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/otequinox/TransformerPlugin.java
index 3ac85a8..87e3842 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/otequinox/TransformerPlugin.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/otequinox/TransformerPlugin.java
@@ -34,9 +34,11 @@
 import org.eclipse.core.internal.runtime.InternalPlatform;
 import org.eclipse.core.runtime.IConfigurationElement; //from: org.eclipse.equinox.registry
 import org.eclipse.core.runtime.RegistryFactory;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.objectteams.otequinox.internal.ASMByteCodeAnalyzer;
 import org.eclipse.objectteams.otequinox.internal.AspectBinding;
 import org.eclipse.objectteams.otequinox.internal.AspectPermissionManager;
+import org.eclipse.objectteams.otequinox.internal.JobAndThreadListener;
 import org.eclipse.objectteams.otequinox.internal.MasterTeamLoader;
 import org.eclipse.objectteams.otequinox.internal.TransformerServiceDelegate;
 import org.eclipse.objectteams.otequinox.hook.ClassScanner;
@@ -136,7 +138,8 @@
 		loadAspectBindings();
 		loadLiftingParticipant();
 		this.serviceRegistration = context.registerService(IOTEquinoxService.class.getName(), this, new Properties());		
-		this.serviceRegistration2 = context.registerService(IOTTransformer.class.getName(), new TransformerServiceDelegate(), new Properties());		
+		this.serviceRegistration2 = context.registerService(IOTTransformer.class.getName(), new TransformerServiceDelegate(), new Properties());
+		Job.getJobManager().addJobChangeListener(new JobAndThreadListener());
 	}
 		
 	/* be a good citizen: clean up. */
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/otequinox/internal/JobAndThreadListener.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/otequinox/internal/JobAndThreadListener.java
new file mode 100644
index 0000000..47bdc55
--- /dev/null
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/otequinox/internal/JobAndThreadListener.java
@@ -0,0 +1,61 @@
+/**********************************************************************
+ * This file is part of "Object Teams Development Tooling"-Software
+ * 
+ * Copyright 2010 GK Software AG
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * $Id$
+ * 
+ * Please visit http://www.eclipse.org/objectteams for updates and contact.
+ * 
+ * Contributors:
+ * 	  Stephan Herrmann - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.objectteams.otequinox.internal;
+
+import java.util.HashSet;
+
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.objectteams.TeamThreadManager;
+
+/**
+ * This listener ensures that each worker threads is made known to the OTRE 
+ * as soon as is starts running Jobs.
+ * 
+ * @since 0.7.1 (incubation)
+ */
+public class JobAndThreadListener implements IJobChangeListener {
+
+	private HashSet<Thread> knownThreads = new HashSet<Thread>();
+	
+	public void aboutToRun(IJobChangeEvent event) {
+		Thread current = Thread.currentThread();
+		synchronized (this.knownThreads) {
+			if (this.knownThreads.contains(current))
+				return;
+			this.knownThreads.add(current);
+		}
+		TeamThreadManager.newThreadStarted(false, null);
+	}
+
+	public void awake(IJobChangeEvent event) {
+	}
+
+	public void done(IJobChangeEvent event) {
+		// FIXME(SH): implement thread ended strategy
+	}
+
+	public void running(IJobChangeEvent event) {
+	}
+
+	public void scheduled(IJobChangeEvent event) {
+	}
+
+	public void sleeping(IJobChangeEvent event) {
+	}
+
+}