diff options
author | Jeroen Bakker <jbakker> | 2020-06-23 14:17:31 +0300 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2020-06-23 14:19:45 +0300 |
commit | cc3e808ab47887c002faaa8a28318a2b4f47e02a (patch) | |
tree | 3429008777551d6a365f919a8cacbd587df09010 /source/blender/editors/screen/screen_ops.c | |
parent | 072a224a28ed63840139c9c76adfaad495148018 (diff) |
Animation: Only update timeline header during playback
The header of all SPACE_ACTIONs are tagged for redraw. Only when the
action editor is showing the timeline it is needed. No noticeable
performance increase. But better to save some CPU cycles.
Reviewed By: Sybren Stüvel
Differential Revision: https://developer.blender.org/D8074
Diffstat (limited to 'source/blender/editors/screen/screen_ops.c')
-rw-r--r-- | source/blender/editors/screen/screen_ops.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 4b4287722ba..b7af353a606 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -4281,11 +4281,12 @@ static bool screen_animation_region_supports_time_follow(eSpace_Type spacetype, (spacetype == SPACE_CLIP && regiontype == RGN_TYPE_PREVIEW); } -static bool match_region_with_redraws(eSpace_Type spacetype, +static bool match_region_with_redraws(const ScrArea *area, eRegionType regiontype, eScreen_Redraws_Flag redraws, bool from_anim_edit) { + const eSpace_Type spacetype = area->spacetype; if (regiontype == RGN_TYPE_WINDOW) { switch (spacetype) { @@ -4352,7 +4353,10 @@ static bool match_region_with_redraws(eSpace_Type spacetype, } else if (regiontype == RGN_TYPE_HEADER) { if (spacetype == SPACE_ACTION) { - return true; + /* The timeline shows the current frame in the header. Other headers + * don't need to be updated. */ + SpaceAction *saction = (SpaceAction *)area->spacedata.first; + return saction->mode == SACTCONT_TIMELINE; } } else if (regiontype == RGN_TYPE_PREVIEW) { @@ -4581,7 +4585,7 @@ static int screen_animation_step(bContext *C, wmOperator *UNUSED(op), const wmEv redraw = true; } else if (match_region_with_redraws( - area->spacetype, region->regiontype, sad->redraws, sad->from_anim_edit)) { + area, region->regiontype, sad->redraws, sad->from_anim_edit)) { redraw = true; } |