Browse Source

Cache improv

flabbet 1 year ago
parent
commit
48f39250da

+ 7 - 1
src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/FilterNodes/KernelFilterNode.cs

@@ -21,6 +21,9 @@ public class KernelFilterNode : FilterNode
 
     private ImageFilter filter;
     private Kernel lastKernel;
+    private TileMode lastTile;
+    private double lastGain;
+    private double lastBias;
 
     public KernelFilterNode()
     {
@@ -35,10 +38,13 @@ public class KernelFilterNode : FilterNode
     {
         var kernel = Kernel.Value;
         
-        if (kernel.Equals(lastKernel))
+        if (kernel.Equals(lastKernel) && Tile.Value == lastTile && Gain.Value == lastGain && Bias.Value == lastBias)
             return filter;
         
         lastKernel = kernel;
+        lastTile = Tile.Value;
+        lastGain = Gain.Value;
+        lastBias = Bias.Value;
         
         filter?.Dispose();
         

+ 1 - 1
src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/Node.cs

@@ -126,7 +126,7 @@ public abstract class Node : IReadOnlyNode, IDisposable
     {
         if (_managedTextures.TryGetValue(id, out var texture))
         {
-            if (texture.Size != size)
+            if (texture.Size != size || texture.IsDisposed)
             {
                 texture.Dispose();
                 texture = new Texture(size);