Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorMike Krüger <mikkrg@microsoft.com>2019-06-05 08:53:07 +0300
committerGitHub <noreply@github.com>2019-06-05 08:53:07 +0300
commit794d45c338a9372744c70849e5f7081100929b64 (patch)
tree6aee8654156655d8fa825924c57a2397ffe442ae /main
parentfca071aa393b142f2b14b97df405a5fcda4696a3 (diff)
parent800c10b8d37ebc6aeb9367390bc3015244614701 (diff)
Merge pull request #7708 from mono/master-DisposedToken
[Ide] Added a disposed token to the document controller API.
Diffstat (limited to 'main')
-rw-r--r--main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs7
-rw-r--r--main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewContent.cs15
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.BuildOutputView/BuildOutputViewContent.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentController.cs19
4 files changed, 26 insertions, 21 deletions
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs
index 2e2740eea2..15a38cfc9f 100644
--- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs
+++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs
@@ -64,7 +64,6 @@ namespace MonoDevelop.AssemblyBrowser
{
DocumentTitle = GettextCatalog.GetString ("Assembly Browser");
widget = new AssemblyBrowserWidget ();
- IsDisposed = false;
FillWidget ();
}
@@ -104,14 +103,8 @@ namespace MonoDevelop.AssemblyBrowser
widget.EnsureDefinitionsLoaded (definitions);
}
- public bool IsDisposed {
- get;
- private set;
- }
-
protected override void OnDispose ()
{
- IsDisposed = true;
if (currentWs != null)
currentWs.WorkspaceLoaded -= Handle_WorkspaceLoaded;
diff --git a/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewContent.cs b/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewContent.cs
index 4a46c93df7..1bbfbb0e4b 100644
--- a/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewContent.cs
+++ b/main/src/addins/MonoDevelop.TextEditor/MonoDevelop.TextEditor/TextViewContent.cs
@@ -1,4 +1,4 @@
-//
+//
// Copyright (c) Microsoft Corp. (https://www.microsoft.com)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -291,14 +291,11 @@ namespace MonoDevelop.TextEditor
Components.Control control;
- bool isDisposed;
protected override void OnDispose ()
{
- if (isDisposed)
+ if (IsDisposed)
return;
- isDisposed = true;
-
textBufferRegistration?.Dispose ();
textBufferRegistration = null;
@@ -579,7 +576,7 @@ namespace MonoDevelop.TextEditor
Task autoSaveTask;
void InformAutoSave ()
{
- if (isDisposed)
+ if (IsDisposed)
return;
RemoveAutoSaveTimer ();
autoSaveTimer = GLib.Timeout.Add (500, delegate {
@@ -725,7 +722,7 @@ namespace MonoDevelop.TextEditor
void ReloadFromDisk ()
{
try {
- if (isDisposed || !File.Exists (FilePath))
+ if (IsDisposed || !File.Exists (FilePath))
return;
Load (true);
@@ -739,7 +736,7 @@ namespace MonoDevelop.TextEditor
void KeepChanges ()
{
- if (isDisposed)
+ if (IsDisposed)
return;
ShowNotification = false;
DismissInfoBar ();
@@ -841,4 +838,4 @@ namespace MonoDevelop.TextEditor
=> throw new NotImplementedException ();
}
}
-} \ No newline at end of file
+}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.BuildOutputView/BuildOutputViewContent.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.BuildOutputView/BuildOutputViewContent.cs
index e08d862924..ff00434baf 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.BuildOutputView/BuildOutputViewContent.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.BuildOutputView/BuildOutputViewContent.cs
@@ -1,4 +1,4 @@
-//
+//
// BuildOutputView.cs
//
// Author:
@@ -110,16 +110,14 @@ namespace MonoDevelop.Ide.BuildOutputView
return control;
}
- bool disposed = false;
protected override void OnDispose ()
{
- if (!disposed) {
+ if (!IsDisposed) {
if (control != null) {
control.FileNameChanged -= FileNameChanged;
control.Dispose ();
}
- disposed = true;
}
base.OnDispose ();
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentController.cs
index 1f7364566c..85646e209a 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentController.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Documents/DocumentController.cs
@@ -1,4 +1,4 @@
-//
+//
// DocumentController.cs
//
// Author:
@@ -384,12 +384,26 @@ namespace MonoDevelop.Ide.Gui.Documents
}
}
+ CancellationTokenSource disposedTokenSource = new CancellationTokenSource ();
+
+ /// <summary>
+ /// Returns a dispose token that's canceled when the document controller disposes.
+ /// </summary>
+ protected CancellationToken DisposedToken { get; }
+
+ protected bool IsDisposed { get => disposed; }
+
protected virtual bool ControllerIsViewOnly => false;
internal FilePath OriginalContentName { get; set; }
internal bool Initialized => initialized;
+ public DocumentController ()
+ {
+ DisposedToken = disposedTokenSource.Token;
+ }
+
/// <summary>
/// Initializes the controller
/// </summary>
@@ -413,6 +427,9 @@ namespace MonoDevelop.Ide.Gui.Documents
public void Dispose ()
{
if (!disposed) {
+ disposedTokenSource.Cancel ();
+ disposedTokenSource.Dispose ();
+ disposedTokenSource = null;
linkedController?.Dispose ();
disposed = true;
OnDispose ();