From 0347bbf8ebc36b495916cd5199f58850bd8d92cf Mon Sep 17 00:00:00 2001 From: Mathias Kinzler Date: Tue, 16 Mar 2010 11:35:40 +0100 Subject: [PATCH] NPE during Eclipse shutdown Make the "traceVerbose" flag static and set it during start() and stop(). Bug: 304799 Change-Id: I48bfd339f934a396e35a567f5e8efb5ddc9adbfe Signed-off-by: Mathias Kinzler --- org.eclipse.egit.ui/src/org/eclipse/egit/ui/Activator.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/Activator.java b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/Activator.java index 3d18d88e..cd9d2702 100644 --- a/org.eclipse.egit.ui/src/org/eclipse/egit/ui/Activator.java +++ b/org.eclipse.egit.ui/src/org/eclipse/egit/ui/Activator.java @@ -282,6 +282,12 @@ public class Activator extends AbstractUIPlugin { // FIXME, need to be more intelligent about this to avoid too much work private static final long REPO_SCAN_INTERVAL = 10000L; + // volatile in order to ensure thread synchronization + private volatile boolean doReschedule = true; + + void setReschedule(boolean reschedule){ + doReschedule = reschedule; + } @Override protected IStatus run(IProgressMonitor monitor) { @@ -323,7 +329,8 @@ public class Activator extends AbstractUIPlugin { GitTraceLocation.getTrace().trace( GitTraceLocation.UI.getLocation(), "Rescheduling " + getName() + " job"); //$NON-NLS-1$ //$NON-NLS-2$ - schedule(REPO_SCAN_INTERVAL); + if (doReschedule) + schedule(REPO_SCAN_INTERVAL); } catch (Exception e) { // TODO is this the right location? if (GitTraceLocation.UI.isActive()) @@ -369,10 +376,14 @@ public class Activator extends AbstractUIPlugin { } public void stop(final BundleContext context) throws Exception { + if (GitTraceLocation.UI.isActive()) GitTraceLocation.getTrace().trace( GitTraceLocation.UI.getLocation(), "Trying to cancel " + rcs.getName() + " job"); //$NON-NLS-1$ //$NON-NLS-2$ + + rcs.setReschedule(false); + rcs.cancel(); if (GitTraceLocation.UI.isActive()) GitTraceLocation.getTrace().trace( @@ -386,6 +397,7 @@ public class Activator extends AbstractUIPlugin { if (GitTraceLocation.UI.isActive()) GitTraceLocation.getTrace().trace( GitTraceLocation.UI.getLocation(), "Jobs terminated"); //$NON-NLS-1$ + super.stop(context); plugin = null; } -- 2.11.4.GIT