Index: src/lib/elm_slideshow.c
===================================================================
--- src/lib/elm_slideshow.c	(revision 65526)
+++ src/lib/elm_slideshow.c	(working copy)
@@ -51,9 +51,11 @@
                              Evas_Callback_Type type, void *event_info);
 
 static const char SIG_CHANGED[] = "changed";
+static const char SIG_TRANSITION_END[] = "transition,end";
 
 static const Evas_Smart_Cb_Description _signals[] = {
    {SIG_CHANGED, ""},
+   {SIG_TRANSITION_END, ""},
    {NULL, NULL}
 };
 
@@ -307,7 +309,7 @@
 }
 
 static void
-_end(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+_end(void *data, Evas_Object *obj __UNUSED__, const char *emission, const char *source __UNUSED__)
 {
    Elm_Slideshow_Item *item;
    Widget_Data *wd = elm_widget_data_get(data);
@@ -329,6 +331,8 @@
 
    edje_object_part_swallow(wd->slideshow, "elm.swallow.1", VIEW(item));
    edje_object_signal_emit(wd->slideshow, "anim,end", "slideshow");
+   if (emission != NULL)
+     evas_object_smart_callback_call(data, SIG_TRANSITION_END, wd->current);
 }
 
 static Eina_Bool
Index: src/lib/Elementary.h.in
===================================================================
--- src/lib/Elementary.h.in	(revision 65526)
+++ src/lib/Elementary.h.in	(working copy)
@@ -20405,7 +20405,9 @@
     * Smart events one can add callbacks for are:
     *
     * - @c "changed" - when the slideshow switches its view to a new
-    *   item
+    *   item. event_info parameter in callback contains the current visible item
+    * - @c "transition,end" - when a slide transition ends. event_info parameter
+    *   in callback contains the current visible item
     *
     * List of examples for the slideshow widget:
     * @li @ref slideshow_example
Index: src/bin/test_slideshow.c
===================================================================
--- src/bin/test_slideshow.c	(revision 65526)
+++ src/bin/test_slideshow.c	(working copy)
@@ -99,14 +99,21 @@
    return photo;
 }
 
+static void
+_slide_transition(void *data, Evas_Object *obj __UNUSED__, void *event_info)
+{
+   Elm_Slideshow_Item *it = (Elm_Slideshow_Item *) event_info;
+   if (data == it)
+     printf("Reaches to End of slides\n");
+}
 
-
 void
 test_slideshow(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *win, *bg, *notify, *bx, *bt, *hv, *spin;
    const Eina_List *l;
    const char *transition, *layout;
+   Elm_Slideshow_Item *last_item;
 
    win = elm_win_add(NULL, "slideshow", ELM_WIN_BASIC);
    elm_win_title_set(win, "Slideshow");
@@ -134,7 +141,8 @@
    elm_slideshow_item_add(slideshow, &itc, img5);
    elm_slideshow_item_add(slideshow, &itc, img6);
    elm_slideshow_item_add(slideshow, &itc, img7);
-   elm_slideshow_item_add(slideshow, &itc, img8);
+   last_item = elm_slideshow_item_add(slideshow, &itc, img8);
+   evas_object_smart_callback_add(slideshow, "transition,end", _slide_transition, last_item);
 
    notify = elm_notify_add(win);
    elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
