Merge branch 'master' into devs/hermet/lottie

This commit is contained in:
Hermet Park 2019-11-22 11:54:37 +09:00
commit f62bfa2465
5 changed files with 32 additions and 13 deletions

View File

@ -551,8 +551,8 @@ eina_matrix3_rotate(Eina_Matrix3 *m, double rad)
* Later we would want someone to look at this and improve accuracy. * Later we would want someone to look at this and improve accuracy.
*/ */
#if 1 #if 1
c = cosf(rad); c = cos(rad);
s = sinf(rad); s = sin(rad);
#else #else
/* normalize the angle between -pi,pi */ /* normalize the angle between -pi,pi */
rad = fmod(rad + M_PI, 2 * M_PI) - M_PI; rad = fmod(rad + M_PI, 2 * M_PI) - M_PI;

View File

@ -238,6 +238,8 @@ static void
_sizing_eval(void *data) _sizing_eval(void *data)
{ {
Evas_Object *obj = data; Evas_Object *obj = data;
Elm_Object_Item *eo_item;
const Eina_List *l;
const char *max_size_str; const char *max_size_str;
int max_size = 0; int max_size = 0;
char buf[128]; char buf[128];
@ -255,6 +257,12 @@ _sizing_eval(void *data)
elm_layout_signal_emit(sd->hover, "elm,state,align,default", "elm"); elm_layout_signal_emit(sd->hover, "elm,state,align,default", "elm");
edje_object_message_signal_process(elm_layout_edje_get(sd->hover)); edje_object_message_signal_process(elm_layout_edje_get(sd->hover));
EINA_LIST_FOREACH(sd->items, l, eo_item)
{
ELM_HOVERSEL_ITEM_DATA_GET(eo_item, item);
efl_canvas_group_calculate(VIEW(item));
}
elm_box_recalculate(sd->bx); elm_box_recalculate(sd->bx);
evas_object_size_hint_combined_min_get(sd->bx, &box_w, &box_h); evas_object_size_hint_combined_min_get(sd->bx, &box_w, &box_h);
@ -501,7 +509,6 @@ _activate(Evas_Object *obj)
{ {
ELM_HOVERSEL_ITEM_DATA_GET(eo_item, item); ELM_HOVERSEL_ITEM_DATA_GET(eo_item, item);
evas_object_show(VIEW(item)); evas_object_show(VIEW(item));
efl_canvas_group_calculate(VIEW(item));
elm_box_pack_end(sd->bx, VIEW(item)); elm_box_pack_end(sd->bx, VIEW(item));
} }

View File

@ -59,7 +59,11 @@ _animator_cb(void *data, const Efl_Event *ev EINA_UNUSED)
efl_gfx_mapping_reset(obj); efl_gfx_mapping_reset(obj);
efl_animation_apply(pd->in->animation, pd->in->progress, obj); efl_animation_apply(pd->in->animation, pd->in->progress, obj);
efl_event_callback_call(obj, EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, &pd->in->progress); double progress = pd->in->progress;
efl_event_callback_call(obj, EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_PROGRESS_UPDATED, &progress);
//Check if animation stopped in animation_progress,updated callback.
if (!pd->in) return;
//Not end. Keep going. //Not end. Keep going.
if ((pd->in->speed < 0 && EINA_DBL_EQ(pd->in->progress, 0)) || if ((pd->in->speed < 0 && EINA_DBL_EQ(pd->in->progress, 0)) ||
@ -103,6 +107,7 @@ static Eina_Value
_start_fcb(Eo *o, void *data EINA_UNUSED, const Eina_Value v) _start_fcb(Eo *o, void *data EINA_UNUSED, const Eina_Value v)
{ {
Efl_Canvas_Object_Animation_Data *pd = efl_data_scope_safe_get(o, MY_CLASS); Efl_Canvas_Object_Animation_Data *pd = efl_data_scope_safe_get(o, MY_CLASS);
EINA_SAFETY_ON_NULL_RETURN_VAL(pd, EINA_VALUE_EMPTY);
if (!pd->in) return v; //animation was stopped before anything started if (!pd->in) return v; //animation was stopped before anything started
_start(o, pd, pd->in->start_pos); _start(o, pd, pd->in->start_pos);
return v; return v;
@ -166,6 +171,8 @@ _efl_canvas_object_animation_animation_start(Eo *obj, Efl_Canvas_Object_Animatio
in->speed = speed; in->speed = speed;
in->start_pos = start_pos; in->start_pos = start_pos;
efl_event_callback_call(obj, EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, in->animation); efl_event_callback_call(obj, EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, in->animation);
//You should not rely on in beeing available after calling the above event.
in = NULL;
if (efl_animation_start_delay_get(animation) > 0.0) if (efl_animation_start_delay_get(animation) > 0.0)
{ {
@ -190,7 +197,9 @@ _efl_canvas_object_animation_animation_stop(Eo *obj, Efl_Canvas_Object_Animation
efl_event_callback_call(obj, EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, pd->in->animation); efl_event_callback_call(obj, EFL_CANVAS_OBJECT_ANIMATION_EVENT_ANIMATION_CHANGED, pd->in->animation);
free(pd->in); //this could be NULL if some weird callstack calls stop again while the above event is executed
if (pd->in)
free(pd->in);
pd->in = NULL; pd->in = NULL;
} }

View File

@ -20,14 +20,17 @@ evas_vg_load_file_close_json(Vg_File_Data *vfd)
Lottie_Animation *lot_anim = (Lottie_Animation *) vfd->loader_data; Lottie_Animation *lot_anim = (Lottie_Animation *) vfd->loader_data;
lottie_animation_destroy(lot_anim); lottie_animation_destroy(lot_anim);
if (vfd->anim_data->markers) if (vfd->anim_data)
{ {
Vg_File_Anim_Data_Marker *marker; if (vfd->anim_data->markers)
EINA_INARRAY_FOREACH(vfd->anim_data->markers, marker) {
if (marker->name) eina_stringshare_del(marker->name); Vg_File_Anim_Data_Marker *marker;
eina_inarray_free(vfd->anim_data->markers); EINA_INARRAY_FOREACH(vfd->anim_data->markers, marker)
if (marker->name) eina_stringshare_del(marker->name);
eina_inarray_free(vfd->anim_data->markers);
}
free(vfd->anim_data);
} }
if (vfd->anim_data) free(vfd->anim_data);
if (vfd->root) efl_unref(vfd->root); if (vfd->root) efl_unref(vfd->root);
free(vfd); free(vfd);

View File

@ -463,8 +463,8 @@ EFL_START_TEST(eina_matrix3_operations)
fail_if (!MATRIX3_CMP(m1.xx, m1.xy, m1.xz, fail_if (!MATRIX3_CMP(m1.xx, m1.xy, m1.xz,
m1.yx, m1.yy, m1.yz, m1.yx, m1.yy, m1.yz,
m1.zx, m1.zy, m1.zz, m1.zx, m1.zy, m1.zz,
cosf(rotate_radian), -sinf(rotate_radian), 0, cos(rotate_radian), -sin(rotate_radian), 0,
sinf(rotate_radian), cosf(rotate_radian), 0, sin(rotate_radian), cos(rotate_radian), 0,
0, 0, 1)); 0, 0, 1));
eina_matrix3_values_set(&m1, eina_matrix3_values_set(&m1,