summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHermet Park <hermetpark@gmail.com>2019-11-29 11:18:15 +0900
committerHermet Park <hermetpark@gmail.com>2019-11-29 11:20:48 +0900
commitd05c2169a89bb17f0ab985ea01f48ca26b2218c1 (patch)
tree52fc12797451bf72f639b949dcc361d827c2f6ba
parent153b5cffd80748aa913a3fa7da0337167496ad10 (diff)
downloadefl-d05c2169a89bb17f0ab985ea01f48ca26b2218c1.tar.gz
vector cache: skip animation update as possible.
Since the vector file data is shareable among the multiple vg instances, vfd could keep the requested frame data already by the other instance. This case vector cache quickly return the vector data withouth any further progress.
-rw-r--r--src/lib/evas/vg/evas_vg_cache.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/lib/evas/vg/evas_vg_cache.c b/src/lib/evas/vg/evas_vg_cache.c
index ed65f50099..5c0242db23 100644
--- a/src/lib/evas/vg/evas_vg_cache.c
+++ b/src/lib/evas/vg/evas_vg_cache.c
@@ -432,8 +432,17 @@ evas_cache_vg_tree_get(Vg_Cache_Entry *vg_entry, unsigned int frame_num)
if (!vfd) return NULL;
//No need to update.
- if (!vfd->anim_data && vg_entry->root)
- return vg_entry->root;
+ if (vfd->anim_data)
+ {
+ if (vg_entry->root &&
+ vfd->anim_data->frame_num == frame_num)
+ return vg_entry->root;
+ }
+ else
+ {
+ if (vg_entry->root)
+ return vg_entry->root;
+ }
if (!vfd->static_viewbox)
{