raster pushed a commit to branch master.

http://git.enlightenment.org/apps/rage.git/commit/?id=d66c83a547a08a50cab8edf63537df34e9b8c89d

commit d66c83a547a08a50cab8edf63537df34e9b8c89d
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Mon Jan 9 16:18:07 2017 +0900

    rage videothumb - use new skip header feature to avoid stutters
---
 src/bin/videothumb.c | 122 +++++++++++++++++++++------------------------------
 1 file changed, 51 insertions(+), 71 deletions(-)

diff --git a/src/bin/videothumb.c b/src/bin/videothumb.c
index be003ac..600b336 100644
--- a/src/bin/videothumb.c
+++ b/src/bin/videothumb.c
@@ -78,30 +78,10 @@ _thumb_update(Evas_Object *obj)
    if (!sd) return;
    snprintf(buf, sizeof(buf), "%u", sd->realpos);
    evas_object_image_file_set(sd->o_img2, NULL, NULL);
-   evas_object_image_file_set(sd->o_img2, sd->realfile, buf);
-   evas_object_image_size_get(sd->o_img2, &(sd->iw), &(sd->ih));
-   if ((sd->iw <= 0) || (sd->ih <= 0))
-     {
-        if (sd->cycle_timer)
-          {
-             sd->pos = 0.0;
-             if (!sd->thumb_exe)
-               {
-                  _videothumb_eval(obj, EINA_TRUE);
-               }
-          }
-        else
-          {
-             evas_object_del(sd->o_img2);
-             sd->o_img2 = NULL;
-             evas_object_smart_callback_call(obj, "failed", NULL);
-          }
-     }
-   else
-     {
-        evas_object_image_preload(sd->o_img, EINA_FALSE);
-        evas_object_smart_callback_call(obj, "loaded", NULL);
-     }
+   evas_object_image_file_set(sd->o_img2, sd->realfile,
+                              sd->poster ? NULL : buf);
+   evas_object_image_preload(sd->o_img2, EINA_FALSE);
+   evas_object_smart_callback_call(obj, "loaded", NULL);
 }
 
 static void
@@ -232,13 +212,10 @@ _cb_thumb_exe(void *data, int type EINA_UNUSED, void 
*event)
           {
              _thumb_match_update(o, sd->realpath);
           }
-        if ((sd->iw <= 0) || (sd->ih <= 0))
+        if (sd->exe_handler)
           {
-             if (sd->exe_handler)
-               {
-                  ecore_event_handler_del(sd->exe_handler);
-                  sd->exe_handler = NULL;
-               }
+             ecore_event_handler_del(sd->exe_handler);
+             sd->exe_handler = NULL;
           }
         return EINA_FALSE;
      }
@@ -254,8 +231,48 @@ _cb_preload(void *data, Evas *e EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, void
    if (sd->o_img) evas_object_del(sd->o_img);
    sd->o_img = sd->o_img2;
    sd->o_img2 = NULL;
-   evas_object_show(sd->o_img);
-   evas_object_smart_callback_call(data, "data", NULL);
+   evas_object_image_size_get(sd->o_img, &(sd->iw), &(sd->ih));
+   if ((sd->iw <= 0) || (sd->ih <= 0))
+     {
+        if (sd->cycle_timer)
+          {
+             if (sd->pos == 0.0)
+               {
+                  _videothumb_launch(data);
+               }
+             else
+               {
+                  sd->pos = 0.0;
+                  if (!sd->thumb_exe) _videothumb_eval(data, EINA_TRUE);
+               }
+          }
+        else
+          {
+             evas_object_del(sd->o_img);
+             sd->o_img = NULL;
+             evas_object_smart_callback_call(data, "failed", NULL);
+          }
+     }
+   else
+     {
+        Eina_Bool ok = EINA_FALSE;
+        struct stat st1, st2;
+
+        if (stat(sd->realpath, &st1) == 0)
+          {
+             if (stat(sd->realfile, &st2) == 0)
+               {
+                  if (st1.st_mtime < st2.st_mtime) ok = EINA_TRUE;
+               }
+          }
+        if (ok)
+          {
+             evas_object_show(sd->o_img);
+             evas_object_smart_callback_call(data, "data", NULL);
+          }
+        else _videothumb_launch(data);
+     }
+   _smart_calculate(data);
 }
 
 static void
@@ -272,6 +289,7 @@ _videothumb_image_load(Evas_Object *obj)
    if (!sd) return;
    if (!sd->file) return;
    sd->o_img2 = evas_object_image_filled_add(evas_object_evas_get(obj));
+   evas_object_image_load_head_skip_set(sd->o_img2, EINA_TRUE);
    evas_object_smart_member_add(sd->o_img2, obj);
    if (sd->poster_mode)
      {
@@ -312,46 +330,8 @@ _videothumb_image_load(Evas_Object *obj)
                                   _cb_preload, obj);
    evas_object_image_file_set(sd->o_img2, sd->realfile,
                               sd->poster ? NULL : buf);
-   evas_object_image_size_get(sd->o_img2, &(sd->iw), &(sd->ih));
+   evas_object_image_preload(sd->o_img2, EINA_FALSE);
    _smart_calculate(obj);
-   if (sd->iw > 0)
-     {
-        Eina_Bool ok = EINA_FALSE;
-        struct stat st1, st2;
-
-        if (stat(sd->realpath, &st1) == 0)
-          {
-             if (stat(sd->realfile, &st2) == 0)
-               {
-                  if (st1.st_mtime < st2.st_mtime) ok = EINA_TRUE;
-               }
-          }
-        if (ok)
-          {
-             evas_object_image_preload(sd->o_img2, EINA_FALSE);
-             return;
-          }
-     }
-   if (sd->iw <= 0)
-     {
-        Eina_Bool ok = EINA_FALSE;
-        struct stat st1, st2;
-
-        if (stat(sd->realpath, &st1) == 0)
-          {
-             if (stat(sd->realfile, &st2) == 0)
-               {
-                  if (st1.st_mtime < st2.st_mtime)
-                    {
-                       ok = EINA_TRUE;
-                    }
-               }
-          }
-        if (!ok)
-          {
-             _videothumb_launch(obj);
-          }
-     }
 }
 
 static void

-- 


Reply via email to