Fix cache related issues

This commit is contained in:
Jaex 2017-11-18 10:04:13 +03:00
parent 011b587cec
commit 5d1c347644

View file

@ -35,7 +35,7 @@ public abstract class BaseEffectShape : BaseShape
public abstract string OverlayText { get; }
private bool isEffectCaching, cachePending, cacheClearingPending;
private bool drawCache, isEffectCaching, cachePending;
private Image cachedEffect;
public abstract void ApplyEffect(Bitmap bmp);
@ -44,11 +44,6 @@ public override void OnUpdate()
{
base.OnUpdate();
if (cacheClearingPending)
{
ClearCache();
}
if (cachePending)
{
CacheEffect();
@ -57,11 +52,11 @@ public override void OnUpdate()
public virtual void OnDraw(Graphics g)
{
if (isEffectCaching)
if (drawCache && isEffectCaching)
{
OnDrawOverlay(g, "Processing...");
}
else if (cachedEffect != null)
else if (drawCache && cachedEffect != null)
{
g.InterpolationMode = InterpolationMode.NearestNeighbor;
g.DrawImage(cachedEffect, RectangleInsideCanvas);
@ -123,7 +118,7 @@ public override void OnCreated()
public override void OnMoving()
{
ClearCache();
StopDrawCache();
}
public override void OnMoved()
@ -133,7 +128,7 @@ public override void OnMoved()
public override void OnResizing()
{
ClearCache();
StopDrawCache();
}
public override void OnResized()
@ -146,6 +141,7 @@ private void CacheEffect()
if (!isEffectCaching)
{
cachePending = false;
drawCache = true;
ClearCache();
@ -169,17 +165,18 @@ private void CacheEffect()
}
}
private void StopDrawCache()
{
drawCache = false;
cachePending = false;
}
private void ClearCache()
{
if (isEffectCaching)
{
cacheClearingPending = true;
}
else if (cachedEffect != null)
if (!isEffectCaching && cachedEffect != null)
{
cachedEffect.Dispose();
cachedEffect = null;
cacheClearingPending = false;
}
}