davemds pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=cca830832a9b68757eb83da77aac0294761623b3
commit cca830832a9b68757eb83da77aac0294761623b3 Author: Dave Andreoli <d...@gurumeditation.it> Date: Sun Jan 24 22:58:24 2016 +0100 Ethumb: make the emotion plugin correctly use the edje frame if requested. The emotion plugin was lacking the ability to use the edje frame as expected, this patch add this ability, so now video thumbnail works like the normal ones. This commit is a bit of a new feature, but I consider this a @fix as now the ethumb_frame_set() API works as expected, also the implementation is so simple that I think it can go in without any problems. --- src/modules/ethumb/emotion/emotion.c | 44 ++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/modules/ethumb/emotion/emotion.c b/src/modules/ethumb/emotion/emotion.c index 2247318..ee2cdfe 100644 --- a/src/modules/ethumb/emotion/emotion.c +++ b/src/modules/ethumb/emotion/emotion.c @@ -41,6 +41,7 @@ struct _emotion_plugin Eina_Bool first; Eet_File *ef; Evas_Object *video; + Evas_Object *edje_frame; Ethumb *e; int w, h; }; @@ -66,8 +67,16 @@ _resize_movie(struct _emotion_plugin *_plugin) ethumb_plugin_image_resize(e, _plugin->w, _plugin->h); - evas_object_resize(_plugin->video, fw, fh); - evas_object_move(_plugin->video, fx, fy); + if (_plugin->edje_frame) + { + evas_object_resize(_plugin->edje_frame, fw, fh); + evas_object_move(_plugin->edje_frame, fx, fy); + } + else + { + evas_object_resize(_plugin->video, fw, fh); + evas_object_move(_plugin->video, fx, fy); + } emotion_object_audio_mute_set(_plugin->video, 1); } @@ -199,6 +208,7 @@ _finish_thumb_obj(void *data) { struct _emotion_plugin *_plugin = data; evas_object_del(_plugin->video); + if (_plugin->edje_frame) evas_object_del(_plugin->edje_frame); free(_plugin); } @@ -260,7 +270,9 @@ _frame_grab_single(void *data) EMOTION_OBJECT_EVENT_FRAME_RESIZE, _frame_resized_cb, _plugin)); emotion_object_play_set(_plugin->video, 0); + evas_object_del(_plugin->video); + if (_plugin->edje_frame) evas_object_del(_plugin->edje_frame); free(_plugin); ethumb_finished_callback_call(e, 1); @@ -368,6 +380,7 @@ _thumb_generate(Ethumb *e) Ethumb_Thumb_Format f; double dv; struct _emotion_plugin *_plugin = calloc(1, sizeof(struct _emotion_plugin)); + const char *ffile, *fgroup, *fswallow; o = emotion_object_add(ethumb_evas_get(e)); r = emotion_object_init(o, NULL); @@ -413,6 +426,32 @@ _thumb_generate(Ethumb *e) emotion_object_play_set(o, 1); evas_object_show(o); + ethumb_frame_get(e, &ffile, &fgroup, &fswallow); + if (ffile && fgroup && fswallow) + { + Evas_Object *ed = edje_object_add(ethumb_evas_get(e)); + if (!ed) + { + ERR("could not create edje frame object."); + return _plugin; + } + if (!edje_object_file_set(ed, ffile, fgroup)) + { + ERR("could not load frame theme."); + evas_object_del(ed); + return _plugin; + } + edje_object_part_swallow(ed, fswallow, o); + if (!edje_object_part_swallow_get(ed, fswallow)) + { + ERR("could not swallow video to edje frame."); + evas_object_del(ed); + return _plugin; + } + evas_object_show(ed); + _plugin->edje_frame = ed; + } + return _plugin; } @@ -423,6 +462,7 @@ _thumb_cancel(Ethumb *e EINA_UNUSED, void *data) if (_plugin->ef) eet_close(_plugin->ef); evas_object_del(_plugin->video); + if (_plugin->edje_frame) evas_object_del(_plugin->edje_frame); free(_plugin); } --