mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EA-545599 git: better listeners disposal
* Do not throw NPE on race between activate and deactivate calls. GitOrigin-RevId: 42c98973a9797afa5bfbc2fe02404627782eb206
This commit is contained in:
committed by
intellij-monorepo-bot
parent
25b9e71248
commit
bc88579b96
@@ -206,19 +206,18 @@ public final class GitVcs extends AbstractVcs {
|
||||
|
||||
@Override
|
||||
protected void activate() {
|
||||
myDisposable = Disposer.newDisposable();
|
||||
Disposable disposable = Disposer.newDisposable();
|
||||
myDisposable = disposable;
|
||||
|
||||
BackgroundTaskUtil.executeOnPooledThread(myDisposable, ()
|
||||
BackgroundTaskUtil.executeOnPooledThread(disposable, ()
|
||||
-> GitExecutableManager.getInstance().testGitExecutableVersionValid(myProject));
|
||||
|
||||
if (myVFSListener == null) {
|
||||
myVFSListener = GitVFSListener.createInstance(this);
|
||||
}
|
||||
myVFSListener = GitVFSListener.createInstance(this, disposable);
|
||||
// make sure to read the registry before opening commit dialog
|
||||
myProject.getService(VcsUserRegistry.class);
|
||||
|
||||
GitAnnotationsListener.registerListener(myProject, myDisposable);
|
||||
GitAdvancedSettingsListener.registerListener(myProject, myDisposable);
|
||||
GitAnnotationsListener.registerListener(myProject, disposable);
|
||||
GitAdvancedSettingsListener.registerListener(myProject, disposable);
|
||||
|
||||
GitUserRegistry.getInstance(myProject).activate();
|
||||
GitBranchIncomingOutgoingManager.getInstance(myProject).activate();
|
||||
@@ -226,10 +225,7 @@ public final class GitVcs extends AbstractVcs {
|
||||
|
||||
@Override
|
||||
protected void deactivate() {
|
||||
if (myVFSListener != null) {
|
||||
Disposer.dispose(myVFSListener);
|
||||
myVFSListener = null;
|
||||
}
|
||||
myVFSListener = null;
|
||||
if (myDisposable != null) {
|
||||
Disposer.dispose(myDisposable);
|
||||
myDisposable = null;
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package git4idea.vfs;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.progress.ProgressIndicator;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.progress.Task;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.NlsContexts;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.vcs.FilePath;
|
||||
@@ -40,8 +42,9 @@ public final class GitVFSListener extends VcsVFSListener {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static GitVFSListener createInstance(@NotNull GitVcs vcs) {
|
||||
public static GitVFSListener createInstance(@NotNull GitVcs vcs, @NotNull Disposable disposable) {
|
||||
GitVFSListener listener = new GitVFSListener(vcs);
|
||||
Disposer.register(disposable, listener);
|
||||
listener.installListeners();
|
||||
return listener;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user