mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-02 18:26:27 +13:00
Fix cache related issues
This commit is contained in:
parent
011b587cec
commit
5d1c347644
1 changed files with 13 additions and 16 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue