mirror of
https://github.com/ShareX/ShareX.git
synced 2024-07-07 07:26:05 +12:00
Fix cache related issues
This commit is contained in:
parent
011b587cec
commit
5d1c347644
|
@ -35,7 +35,7 @@ public abstract class BaseEffectShape : BaseShape
|
||||||
|
|
||||||
public abstract string OverlayText { get; }
|
public abstract string OverlayText { get; }
|
||||||
|
|
||||||
private bool isEffectCaching, cachePending, cacheClearingPending;
|
private bool drawCache, isEffectCaching, cachePending;
|
||||||
private Image cachedEffect;
|
private Image cachedEffect;
|
||||||
|
|
||||||
public abstract void ApplyEffect(Bitmap bmp);
|
public abstract void ApplyEffect(Bitmap bmp);
|
||||||
|
@ -44,11 +44,6 @@ public override void OnUpdate()
|
||||||
{
|
{
|
||||||
base.OnUpdate();
|
base.OnUpdate();
|
||||||
|
|
||||||
if (cacheClearingPending)
|
|
||||||
{
|
|
||||||
ClearCache();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cachePending)
|
if (cachePending)
|
||||||
{
|
{
|
||||||
CacheEffect();
|
CacheEffect();
|
||||||
|
@ -57,11 +52,11 @@ public override void OnUpdate()
|
||||||
|
|
||||||
public virtual void OnDraw(Graphics g)
|
public virtual void OnDraw(Graphics g)
|
||||||
{
|
{
|
||||||
if (isEffectCaching)
|
if (drawCache && isEffectCaching)
|
||||||
{
|
{
|
||||||
OnDrawOverlay(g, "Processing...");
|
OnDrawOverlay(g, "Processing...");
|
||||||
}
|
}
|
||||||
else if (cachedEffect != null)
|
else if (drawCache && cachedEffect != null)
|
||||||
{
|
{
|
||||||
g.InterpolationMode = InterpolationMode.NearestNeighbor;
|
g.InterpolationMode = InterpolationMode.NearestNeighbor;
|
||||||
g.DrawImage(cachedEffect, RectangleInsideCanvas);
|
g.DrawImage(cachedEffect, RectangleInsideCanvas);
|
||||||
|
@ -123,7 +118,7 @@ public override void OnCreated()
|
||||||
|
|
||||||
public override void OnMoving()
|
public override void OnMoving()
|
||||||
{
|
{
|
||||||
ClearCache();
|
StopDrawCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnMoved()
|
public override void OnMoved()
|
||||||
|
@ -133,7 +128,7 @@ public override void OnMoved()
|
||||||
|
|
||||||
public override void OnResizing()
|
public override void OnResizing()
|
||||||
{
|
{
|
||||||
ClearCache();
|
StopDrawCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnResized()
|
public override void OnResized()
|
||||||
|
@ -146,6 +141,7 @@ private void CacheEffect()
|
||||||
if (!isEffectCaching)
|
if (!isEffectCaching)
|
||||||
{
|
{
|
||||||
cachePending = false;
|
cachePending = false;
|
||||||
|
drawCache = true;
|
||||||
|
|
||||||
ClearCache();
|
ClearCache();
|
||||||
|
|
||||||
|
@ -169,17 +165,18 @@ private void CacheEffect()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void StopDrawCache()
|
||||||
|
{
|
||||||
|
drawCache = false;
|
||||||
|
cachePending = false;
|
||||||
|
}
|
||||||
|
|
||||||
private void ClearCache()
|
private void ClearCache()
|
||||||
{
|
{
|
||||||
if (isEffectCaching)
|
if (!isEffectCaching && cachedEffect != null)
|
||||||
{
|
|
||||||
cacheClearingPending = true;
|
|
||||||
}
|
|
||||||
else if (cachedEffect != null)
|
|
||||||
{
|
{
|
||||||
cachedEffect.Dispose();
|
cachedEffect.Dispose();
|
||||||
cachedEffect = null;
|
cachedEffect = null;
|
||||||
cacheClearingPending = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue