From a6c9dbf092072d10d44fa522414d7cffac9172d1 Mon Sep 17 00:00:00 2001 From: Eike Stepper Date: Tue, 20 Oct 2009 12:40:32 +0000 Subject: [292736] Optimize IListener management and notification https://bugs.eclipse.org/bugs/show_bug.cgi?id=292736 --- .../eclipse/net4j/util/lifecycle/Lifecycle.java | 25 ++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java') diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java index e821417a12..a59e8a6cc4 100644 --- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/lifecycle/Lifecycle.java @@ -14,6 +14,7 @@ import org.eclipse.net4j.internal.util.bundle.OM; import org.eclipse.net4j.util.CheckUtil; import org.eclipse.net4j.util.ReflectUtil; import org.eclipse.net4j.util.ReflectUtil.ExcludeFromDump; +import org.eclipse.net4j.util.event.IListener; import org.eclipse.net4j.util.event.Notifier; import org.eclipse.net4j.util.om.trace.ContextTracer; @@ -59,7 +60,11 @@ public class Lifecycle extends Notifier implements ILifecycle lock(); lifecycleState = LifecycleState.ACTIVATING; - fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ABOUT_TO_ACTIVATE)); + IListener[] listeners = getListeners(); + if (listeners != null) + { + fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ABOUT_TO_ACTIVATE), listeners); + } doBeforeActivate(); doActivate(); @@ -108,12 +113,20 @@ public class Lifecycle extends Notifier implements ILifecycle lock(); lifecycleState = LifecycleState.DEACTIVATING; doBeforeDeactivate(); - fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ABOUT_TO_DEACTIVATE)); + IListener[] listeners = getListeners(); + if (listeners != null) + { + fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ABOUT_TO_DEACTIVATE), listeners); + } doDeactivate(); lifecycleState = LifecycleState.INACTIVE; unlock(); - fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.DEACTIVATED)); + if (listeners != null) + { + fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.DEACTIVATED), listeners); + } + return null; } @@ -211,7 +224,11 @@ public class Lifecycle extends Notifier implements ILifecycle { lifecycleState = LifecycleState.ACTIVE; unlock(); - fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ACTIVATED)); + IListener[] listeners = getListeners(); + if (listeners != null) + { + fireEvent(new LifecycleEvent(this, ILifecycleEvent.Kind.ACTIVATED), listeners); + } } else { -- cgit v1.2.3