Making sure we don't executer rebuilds while in a separate thread from the UI

This commit is contained in:
Lars Brubaker 2021-05-03 17:58:03 -07:00
parent cc7144f00c
commit 1c9119568f
30 changed files with 218 additions and 128 deletions

View file

@ -30,6 +30,7 @@ either expressed or implied, of the FreeBSD Project.
using System.Collections.Generic;
using System.Threading.Tasks;
using ClipperLib;
using MatterHackers.Agg.UI;
using MatterHackers.DataConverters3D;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.DesignTools.Operations;
@ -157,14 +158,15 @@ namespace MatterHackers.MatterControl.DesignTools
this.Children.Add(child);
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
if (valuesChanged)
{
Invalidate(InvalidateType.DisplayValues);
}
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});

View file

@ -108,6 +108,8 @@ namespace MatterHackers.MatterControl.Plugins.Lithophane
return Task.CompletedTask;
}
var rebuildLocks = this.RebuilLockAll();
ApplicationController.Instance.Tasks.Execute("Generating Lithophane".Localize(), null, (reporter, cancellationToken) =>
{
var generatedMesh = Lithophane.Generate(
@ -130,7 +132,11 @@ namespace MatterHackers.MatterControl.Plugins.Lithophane
// Apply offset
this.Matrix *= Matrix4X4.CreateTranslation(-this.ImageOffset);
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});

View file

@ -95,8 +95,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -89,8 +89,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -99,8 +99,11 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}
});
SourceContainer.Visible = false;
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -31,6 +31,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MatterHackers.Agg.UI;
using MatterHackers.DataConverters3D;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.DesignTools.EditableTypes;
@ -87,8 +88,11 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
});
SourceContainer.Visible = false;
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -127,8 +127,11 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
}
});
SourceContainer.Visible = false;
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -223,14 +223,15 @@ namespace MatterHackers.MatterControl.DesignTools
list.AddRange(curvedChildren);
});
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
if (valuesChanged)
{
Invalidate(InvalidateType.DisplayValues);
}
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});

View file

@ -283,14 +283,15 @@ namespace MatterHackers.MatterControl.DesignTools
list.AddRange(curvedChildren);
});
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
if (valuesChanged)
{
Invalidate(InvalidateType.DisplayValues);
}
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});

View file

@ -163,14 +163,16 @@ namespace MatterHackers.MatterControl.DesignTools
}
SourceContainer.Visible = false;
rebuildLocks.Dispose();
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
if (valuesChanged)
{
Invalidate(InvalidateType.DisplayValues);
}
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});

View file

@ -31,6 +31,7 @@ using System;
using System.Threading;
using System.Threading.Tasks;
using g3;
using MatterHackers.Agg.UI;
using MatterHackers.DataConverters3D;
using MatterHackers.Localizations;
using MatterHackers.MatterControl;
@ -138,14 +139,16 @@ namespace MatterHackers.MatterControl.DesignTools
}
SourceContainer.Visible = false;
rebuildLocks.Dispose();
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
if (valuesChanged)
{
Invalidate(InvalidateType.DisplayValues);
}
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});

View file

@ -345,8 +345,12 @@ namespace MatterHackers.MatterControl.DesignTools
this.Invalidate(InvalidateType.Properties);
}
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Path));
});
return Task.CompletedTask;
});
}

View file

@ -30,6 +30,7 @@ either expressed or implied, of the FreeBSD Project.
using System;
using System.Threading;
using System.Threading.Tasks;
using MatterHackers.Agg.UI;
using MatterHackers.DataConverters3D;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.DesignTools.Operations;
@ -109,8 +110,12 @@ namespace MatterHackers.MatterControl.DesignTools
this.Matrix = oldMatrix;
SourceContainer.Visible = false;
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -181,14 +181,15 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
Mesh = null;
}
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
if (valuesChanged)
{
Invalidate(InvalidateType.DisplayValues);
}
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Mesh));
});
return Task.CompletedTask;
});
}

View file

@ -91,8 +91,11 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
// set the mesh to show the path
this.Mesh = this.VertexSource.Extrude(Constants.PathPolygonsHeight);
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -196,8 +196,11 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
Mesh = mesh;
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Mesh));
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -97,8 +97,11 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
// set the mesh to show the path
this.Mesh = this.VertexSource.Extrude(Constants.PathPolygonsHeight);
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Path));
});
return Task.CompletedTask;
});
}

View file

@ -11,6 +11,7 @@ using System.Threading;
using System.Threading.Tasks;
using g3;
using gs;
using MatterHackers.Agg.UI;
using MatterHackers.DataConverters3D;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.DesignTools.Operations;
@ -100,14 +101,16 @@ namespace MatterHackers.MatterControl.DesignTools
this.FinalVertices = finalVertices;
SourceContainer.Visible = false;
rebuildLocks.Dispose();
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
if (valuesChanged)
{
Invalidate(InvalidateType.DisplayValues);
}
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});

View file

@ -341,14 +341,16 @@ namespace MatterHackers.MatterControl.DesignTools
list.AddRange(twistedChildren);
});
rebuildLocks.Dispose();
if (valuesChanged)
{
Invalidate(InvalidateType.DisplayValues);
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});

View file

@ -246,8 +246,12 @@ namespace MatterHackers.MatterControl.DesignTools
GenerateBase(polygonShape, firstChild.GetAxisAlignedBoundingBox().MinXYZ.Z);
}
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -174,9 +174,11 @@ namespace MatterHackers.MatterControl.DesignTools
}
}
UiThread.RunOnIdle(() =>
{
rebuildLock.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
return Task.CompletedTask;
});
});
}
}

View file

@ -32,6 +32,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using MatterHackers.Agg;
using MatterHackers.Agg.UI;
using MatterHackers.DataConverters3D;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.DesignTools.Operations;
@ -69,8 +70,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -69,8 +69,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -177,8 +177,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -188,8 +188,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -96,8 +96,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -138,8 +138,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
{
}
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}

View file

@ -114,8 +114,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow.View3D
// set the mesh to show the path
this.Mesh = this.VertexSource.Extrude(Constants.PathPolygonsHeight);
UiThread.RunOnIdle(() =>
{
rebuildLocks.Dispose();
Parent?.Invalidate(new InvalidateArgs(this, InvalidateType.Children));
});
return Task.CompletedTask;
});
}