Queue processing if it is requested while already processing

This commit is contained in:
Jaex 2017-11-17 18:50:14 +03:00
parent 7f90c61a9d
commit 8e671348ae

View file

@ -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;