Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <jbakker>2020-06-23 14:17:31 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2020-06-23 14:19:45 +0300
commitcc3e808ab47887c002faaa8a28318a2b4f47e02a (patch)
tree3429008777551d6a365f919a8cacbd587df09010
parent072a224a28ed63840139c9c76adfaad495148018 (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
-rw-r--r--source/blender/editors/screen/screen_ops.c10
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;
}