Bug 441587

Summary: Windows - Cache flushing after time change operations when "Live Preview" is active.
Product: [Applications] krita Reporter: Eoin O'Neill <eoinoneill1991>
Component: AnimationAssignee: Eoin O'Neill <eoinoneill1991>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version First Reported In: 5.0.0-beta1   
Target Milestone: ---   
Platform: Microsoft Windows   
OS: Microsoft Windows   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Eoin O'Neill 2021-08-26 20:30:54 UTC
SUMMARY
For some reason, the cache will flush whenever the image time has changed. This isn't a deal-breaker, but it's a minor annoyance and inconsistent with the linux build.

STEPS TO REPRODUCE
1. Press play to cache the animation.
2. Press stop. Cache should persist.
3. Seek to time. Cache will immediately flush, which is undesired.

OBSERVED RESULT
Cache flushes

EXPECTED RESULT
Cache should persist. In the event that a flush is required, it should only flush for the active frames' scope.

SOFTWARE/OS VERSIONS
Windows: 10
Comment 1 Eoin O'Neill 2021-09-16 00:07:14 UTC
Git commit b9eed7ba0ed597aedb488ddc37aaa31a2a659d0e by Eoin O'Neill.
Committed on 16/09/2021 at 00:00.
Pushed by eoinoneill into branch 'master'.

Fix frame cache invalidation with live preview on Windows.

I couldn't determine why this behavior is different between windows and
linux, but I was able to solve the issue. Basically, when we refresh
graph async we want to block frame invalidation temporarily since we
will do so later in the method manually if it's necessary.

I also noticed we have a few uses of `friend class` here or there that
need to eventually be cleaned up. I've made a note of it, and I will
handle it once Krita 5 is officially out.

M  +1    -0    libs/image/kis_image_animation_interface.h
M  +15   -0    libs/image/kis_suspend_projection_updates_stroke_strategy.cpp
M  +11   -0    libs/image/kis_suspend_projection_updates_stroke_strategy.h

https://invent.kde.org/graphics/krita/commit/b9eed7ba0ed597aedb488ddc37aaa31a2a659d0e
Comment 2 Eoin O'Neill 2021-09-20 21:46:53 UTC
Git commit 689ff53b023342b50570a924951e9833137bdc52 by Eoin O'Neill.
Committed on 20/09/2021 at 21:19.
Pushed by eoinoneill into branch 'krita/5.0'.

Fix frame cache invalidation with live preview on Windows.

I couldn't determine why this behavior is different between windows and
linux, but I was able to solve the issue. Basically, when we refresh
graph async we want to block frame invalidation temporarily since we
will do so later in the method manually if it's necessary.

I also noticed we have a few uses of `friend class` here or there that
need to eventually be cleaned up. I've made a note of it, and I will
handle it once Krita 5 is officially out.
(cherry picked from commit b9eed7ba0ed597aedb488ddc37aaa31a2a659d0e)

M  +1    -0    libs/image/kis_image_animation_interface.h
M  +15   -0    libs/image/kis_suspend_projection_updates_stroke_strategy.cpp
M  +11   -0    libs/image/kis_suspend_projection_updates_stroke_strategy.h

https://invent.kde.org/graphics/krita/commit/689ff53b023342b50570a924951e9833137bdc52