diff options
author | Lluis Sanchez <llsan@microsoft.com> | 2019-05-02 18:30:51 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-02 18:30:51 +0300 |
commit | f9b04bbaff92bf31a84ce8f112298bb3231bb4ac (patch) | |
tree | 5a04480fca883734851549def61eecb8bfdb6ac4 | |
parent | 983ec746f9b2d8117aa84c948c465b6f7f06d97c (diff) | |
parent | ac25fba65444e7564ead272ea20152e749578bb4 (diff) |
Merge pull request #719 from xamarin/backport-pr-701-to-release-8.0
[release-8.0] Fixed Bug 827656: [Watson] QuickTaskOverviewMode.DrawBreakpoints
2 files changed, 5 insertions, 2 deletions
diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.IdleUpdater.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.IdleUpdater.cs index 4cd379f151..f0efd85c90 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.IdleUpdater.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.QuickTasks/QuickTaskOverviewMode.IdleUpdater.cs @@ -119,7 +119,7 @@ namespace MonoDevelop.SourceEditor.QuickTasks bool RunHandler () { tokenExit: - if (token.IsCancellationRequested || mode.TextEditor.GetTextEditorData () == null) { + if (token.IsCancellationRequested || mode.TextEditor.GetTextEditorData () == null || surface.IsDisposed) { cr.Dispose (); // if the surface was newly created dispose it otherwise it'll leak. if (surface != mode.swapIndicatorSurface) @@ -197,7 +197,8 @@ namespace MonoDevelop.SourceEditor.QuickTasks drawingStep++; return true; default: - mode.DrawBreakpoints (cr); + if (cr.Handle != IntPtr.Zero) + mode.DrawBreakpoints (cr); cr.Dispose (); var tmp = mode.indicatorSurface; mode.indicatorSurface = surface; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/CairoExtensions.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/CairoExtensions.cs index ae8a207e98..e92fe4c229 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/CairoExtensions.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/CairoExtensions.cs @@ -612,6 +612,7 @@ namespace MonoDevelop.Components public int Width { get; private set; } public int Height { get; private set; } public object Data { get; set; } + public bool IsDisposed { get; private set; } public SurfaceWrapper (Cairo.Context similar, int width, int height) { @@ -654,6 +655,7 @@ namespace MonoDevelop.Components public void Dispose () { + IsDisposed = true; if (Surface != null) { ((IDisposable)Surface).Dispose (); } |