okra pushed a commit to branch master.

http://git.enlightenment.org/apps/ephoto.git/commit/?id=b186c391daffae3362a2ce27cf4d27603fe6370c

commit b186c391daffae3362a2ce27cf4d27603fe6370c
Author: Stephen okra Houston <[email protected]>
Date:   Fri Jul 22 11:16:11 2016 -0500

    Ephoto: Fix slideshow transitions.
---
 data/themes/ephoto.edc     | 20 +++++++++------
 src/bin/ephoto_slideshow.c | 63 ++++++++++++++++++++++++++++------------------
 2 files changed, 50 insertions(+), 33 deletions(-)

diff --git a/data/themes/ephoto.edc b/data/themes/ephoto.edc
index ca45779..4c6eddb 100644
--- a/data/themes/ephoto.edc
+++ b/data/themes/ephoto.edc
@@ -447,24 +447,24 @@ collections {
                color: 255 255 255 255;
             }
          }
-         swallow { "ephoto.swallow.slideshow.item";
+         swallow { "ephoto.swallow.slideshow.item2";
             scale: 1;
             mouse_events: 1;
-            clip_to: "slide_clip";
+            clip_to: "slide_clip2";
             description {
                state: "default" 0.0;
-               rel1.to: "slide_clip";
-               rel2.to: "slide_clip";
+               rel1.to: "slide_clip2";
+               rel2.to: "slide_clip2";
             }
          }
-         swallow { "ephoto.swallow.slideshow.item2";
+         swallow { "ephoto.swallow.slideshow.item";
             scale: 1;
             mouse_events: 1;
-            clip_to: "slide_clip2";
+            clip_to: "slide_clip";
             description {
                state: "default" 0.0;
-               rel1.to: "slide_clip2";
-               rel2.to: "slide_clip2";
+               rel1.to: "slide_clip";
+               rel2.to: "slide_clip";
             }
          }
       }
@@ -484,6 +484,10 @@ collections {
             after: "black_fade_3";
          }
          program { name: "black_fade_3";
+            action: SIGNAL_EMIT "ephoto,transition,raise" "ephoto";
+            after: "black_fade_4";
+         }
+         program { name: "black_fade_4";
             action: STATE_SET "black_fade" 0.0;
             target: "slide_clip2";
             transition: SINUSOIDAL 0.75;
diff --git a/src/bin/ephoto_slideshow.c b/src/bin/ephoto_slideshow.c
index dd9392f..bf657b0 100644
--- a/src/bin/ephoto_slideshow.c
+++ b/src/bin/ephoto_slideshow.c
@@ -26,6 +26,7 @@ struct _Ephoto_Slideshow
    Evas_Object *fullscreen_after;
    Ephoto_Entry *entry;
    Eina_Bool playing;
+   Eina_Bool timer_end;
    Ecore_Timer *timer;
    Ephoto_Slideshow_Move move;
    float timeout;
@@ -117,6 +118,15 @@ _slideshow_move_randomize(Ephoto_Slideshow *ss)
 }
 
 static void
+_on_transition_raise(void *data, Evas_Object *obj EINA_UNUSED,
+    const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
+{
+   Ephoto_Slideshow *ss = data;
+
+   evas_object_raise(ss->current_item);
+}
+
+static void
 _on_transition_end(void *data, Evas_Object *obj EINA_UNUSED,
     const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
 {
@@ -134,6 +144,7 @@ _on_transition_end(void *data, Evas_Object *obj EINA_UNUSED,
      }
    elm_layout_content_set(ss->slideshow, "ephoto.swallow.slideshow.item",
        ss->current_item);
+   evas_object_raise(ss->current_item);
    evas_object_show(ss->current_item);
    elm_layout_signal_emit(ss->slideshow, "ephoto,transition,done", "ephoto");
 
@@ -214,7 +225,10 @@ _slideshow_transition(void *data)
         ss->timer = NULL;
         return EINA_FALSE;
      }
-   ss->current += 1;
+   if (ss->timer_end)
+     ss->current += 1;
+   else
+     ss->timer_end = EINA_TRUE;
    if (!eina_list_nth(ss->entries, ss->current))
      ss->current = 0;
    if (ss->old_item)
@@ -389,15 +403,14 @@ _first(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
 {
    Ephoto_Slideshow *ss = data;
 
-   _slideshow_pause(ss);
-   if (ss->current_item)
+   if (ss->timer)
      {
-        elm_layout_content_unset(ss->slideshow, "ephoto.swallow.slideshow");
-        evas_object_del(ss->current_item);
-        ss->current_item = NULL;
+        ecore_timer_del(ss->timer);
+        ss->timer = NULL;
      }
    ss->current = 0;
-   _slideshow_play(ss);
+   ss->timer_end = EINA_FALSE;
+   _slideshow_transition(ss);
 }
 
 static void
@@ -405,15 +418,14 @@ _next(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
 {
    Ephoto_Slideshow *ss = data;
 
-   _slideshow_pause(ss);
-   if (ss->current_item)
+   if (ss->timer)
      {
-        elm_layout_content_unset(ss->slideshow, "ephoto.swallow.slideshow");
-        evas_object_del(ss->current_item);
-        ss->current_item = NULL;
+        ecore_timer_del(ss->timer);
+        ss->timer = NULL;
      }
    ss->current += 1;
-   _slideshow_play(ss);
+   ss->timer_end = EINA_FALSE;
+   _slideshow_transition(ss);
 }
 
 static void
@@ -449,15 +461,14 @@ _previous(void *data, Evas_Object *obj EINA_UNUSED,
 {
    Ephoto_Slideshow *ss = data;
 
-   _slideshow_pause(ss);
-   if (ss->current_item)
+   if (ss->timer)
      {
-        elm_layout_content_unset(ss->slideshow, 
"ephoto.swallow.slideshow.item");
-        evas_object_del(ss->current_item);
-        ss->current_item = NULL;
+        ecore_timer_del(ss->timer);
+        ss->timer = NULL;
      }
    ss->current -= 1;
-   _slideshow_play(ss);
+   ss->timer_end = EINA_FALSE;
+   _slideshow_transition(ss);
 }
 
 static void
@@ -465,15 +476,14 @@ _last(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
 {
    Ephoto_Slideshow *ss = data;
 
-   _slideshow_pause(ss);
-   if (ss->current_item)
+   if (ss->timer)
      {
-        elm_layout_content_unset(ss->slideshow, "ephoto.swallow.slideshow");
-        evas_object_del(ss->current_item);
-        ss->current_item = NULL;
+        ecore_timer_del(ss->timer);
+        ss->timer = NULL;
      }
    ss->current = eina_list_count(ss->entries) - 1;
-   _slideshow_play(ss);
+   ss->timer_end = EINA_FALSE;
+   _slideshow_transition(ss);
 }
 
 static void
@@ -654,6 +664,7 @@ ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent)
    ss->old_item = NULL;
    ss->current_item = NULL;
    ss->event = NULL;
+   ss->timer_end = EINA_TRUE;
 
    elm_layout_file_set(slideshow, PACKAGE_DATA_DIR "/themes/ephoto.edj",
        "ephoto,slideshow,base");
@@ -667,6 +678,8 @@ ephoto_slideshow_add(Ephoto *ephoto, Evas_Object *parent)
    evas_object_size_hint_align_set(slideshow, EVAS_HINT_FILL, EVAS_HINT_FILL);
 
    edje_object_signal_callback_add(elm_layout_edje_get(ss->slideshow),
+       "ephoto,transition,raise", "ephoto", _on_transition_raise, ss);
+   edje_object_signal_callback_add(elm_layout_edje_get(ss->slideshow),
        "ephoto,transition,end", "ephoto", _on_transition_end, ss);
    return ss->slideshow;
 

-- 


Reply via email to