diff --git a/ShareX.ScreenCaptureLib/Shapes/Effect/BaseEffectShape.cs b/ShareX.ScreenCaptureLib/Shapes/Effect/BaseEffectShape.cs index 4e566a2c8..29ba955d7 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Effect/BaseEffectShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Effect/BaseEffectShape.cs @@ -35,7 +35,7 @@ public abstract class BaseEffectShape : BaseShape public abstract string OverlayText { get; } - private bool isEffectCaching, cachePending; + private bool isEffectCaching, cachePending, cacheClearingPending; private Image cachedEffect; public abstract void ApplyEffect(Bitmap bmp); @@ -44,6 +44,11 @@ public override void OnUpdate() { base.OnUpdate(); + if (cacheClearingPending) + { + ClearCache(); + } + if (cachePending) { CacheEffect(); @@ -166,10 +171,15 @@ private void CacheEffect() private void ClearCache() { - if (!isEffectCaching && cachedEffect != null) + if (isEffectCaching) + { + cacheClearingPending = true; + } + else if (cachedEffect != null) { cachedEffect.Dispose(); cachedEffect = null; + cacheClearingPending = false; } }