From 8e671348ae41d6527ec5f8f140ce55b1c47a0e02 Mon Sep 17 00:00:00 2001 From: Jaex Date: Fri, 17 Nov 2017 18:50:14 +0300 Subject: [PATCH] Queue processing if it is requested while already processing --- .../Shapes/Effect/BaseEffectShape.cs | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/ShareX.ScreenCaptureLib/Shapes/Effect/BaseEffectShape.cs b/ShareX.ScreenCaptureLib/Shapes/Effect/BaseEffectShape.cs index f997ec1ae..4e566a2c8 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Effect/BaseEffectShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Effect/BaseEffectShape.cs @@ -35,11 +35,21 @@ public abstract class BaseEffectShape : BaseShape public abstract string OverlayText { get; } - private bool isEffectCaching; + private bool isEffectCaching, cachePending; private Image cachedEffect; public abstract void ApplyEffect(Bitmap bmp); + public override void OnUpdate() + { + base.OnUpdate(); + + if (cachePending) + { + CacheEffect(); + } + } + public virtual void OnDraw(Graphics g) { if (isEffectCaching) @@ -130,7 +140,9 @@ private void CacheEffect() { if (!isEffectCaching) { - ClearCache(true); + cachePending = false; + + ClearCache(); if (IsInsideCanvas) { @@ -146,11 +158,15 @@ private void CacheEffect() }); } } + else + { + cachePending = true; + } } - private void ClearCache(bool forceClear = false) + private void ClearCache() { - if ((forceClear || !isEffectCaching) && cachedEffect != null) + if (!isEffectCaching && cachedEffect != null) { cachedEffect.Dispose(); cachedEffect = null;