bug fix: A setup to surface for "no animation" does not function normally. 48/17248/1
authorMasayuki Sasaki <masayuki.sasaki@mail.toyota-td.jp>
Thu, 6 Mar 2014 06:49:53 +0000 (15:49 +0900)
committerMasayuki Sasaki <masayuki.sasaki@mail.toyota-td.jp>
Thu, 6 Mar 2014 06:49:53 +0000 (15:49 +0900)
Change-Id: I86a0b57f5726150d0bdd3bd849ea3f13bed8a747
Signed-off-by: Masayuki Sasaki <masayuki.sasaki@mail.toyota-td.jp>
src/ico_plugin_version.h
src/ico_window_animation.c
src/ico_window_mgr.c
src/ico_window_mgr_private.h

index 381cb64..72246d1 100644 (file)
@@ -1 +1 @@
-#define ICO_PLUIGN_VERSION  "0.9.21 (Feb-28-2014)"
+#define ICO_PLUIGN_VERSION  "0.9.21 (Mar-06-2014)"
index e78baab..52514f6 100644 (file)
@@ -453,6 +453,8 @@ animation_end(struct uifw_win_surface *usurf, const int disp)
     }
     if (disp)   {
         usurf->restrain_configure = 0;
+        uifw_trace("animation_end: %08x vis=%d(%x)",
+                   usurf->surfaceid, usurf->visible, usurf->animation.visible);
         if ((usurf->animation.visible == ANIMA_HIDE_AT_END) &&
             (usurf->visible != 0))  {
             usurf->visible = 0;
@@ -887,8 +889,9 @@ animation_swing_end(struct weston_animation *animation)
     if (usurf && usurf->surface)    {
         es = usurf->surface;
         ev = ico_ivi_get_primary_view(usurf);
-        ev->alpha = 1.0;
-
+        ev->alpha = usurf->animation.alpha;
+        uifw_debug("animation_swing_end: %08x set alpha=%f",
+                   usurf->surfaceid, usurf->animation.alpha);
         if ((ev->output) && (es->buffer_ref.buffer))    {
             weston_surface_damage(es);
         }
@@ -973,13 +976,14 @@ animation_fade(struct weston_animation *animation,
             ev->alpha = 1.0f - (((float)(par*2)) / 100.0f);
         }
     }
-    if (ev->alpha < 0.0)        ev->alpha = 0.0;
-    else if (ev->alpha > 1.0)   ev->alpha = 1.0;
-
-    uifw_debug("animation_fade: %08x count=%d %d%% alpha=%1.2f anima=%d state=%d",
-               usurf->surfaceid, animation->frame_counter, par,
-               ev->alpha, usurf->animation.anima, usurf->animation.state);
+    if (ev->alpha < 0.0f)       ev->alpha = 0.0f;
+    else if (ev->alpha > 1.0f)  ev->alpha = 1.0f;
 
+    if ((par < 5) || (par > 95))    {
+        uifw_debug("animation_fade: %08x count=%d %d%% alpha=%1.2f anima=%d state=%d",
+                   usurf->surfaceid, animation->frame_counter, par,
+                   ev->alpha, usurf->animation.anima, usurf->animation.state);
+    }
     if ((ev->output) && (es->buffer_ref.buffer) &&
         (es->width > 0) && (es->height > 0))    {
         weston_surface_damage(es);
@@ -1014,8 +1018,9 @@ animation_fade_end(struct weston_animation *animation)
     if (usurf && usurf->surface)    {
         es = usurf->surface;
         ev = ico_ivi_get_primary_view(usurf);
-        ev->alpha = 1.0;
-
+        ev->alpha = usurf->animation.alpha;
+        uifw_debug("animation_fade_end: %08x set alpha=%f",
+                   usurf->surfaceid, usurf->animation.alpha);
         if ((ev->output) && (es->buffer_ref.buffer) &&
             (es->width > 0) && (es->height > 0))    {
             weston_surface_damage(es);
@@ -1161,8 +1166,7 @@ animation_zoom_end(struct weston_animation *animation)
     if (usurf && usurf->surface)    {
         es = usurf->surface;
         ev = ico_ivi_get_primary_view(usurf);
-        ev->alpha = 1.0;
-
+        ev->alpha = usurf->animation.alpha;
         if ((ev->output) && (es->buffer_ref.buffer) &&
             (es->width > 0) && (es->height > 0))    {
             weston_surface_damage(es);
index 89e718c..36d4ac2 100644 (file)
@@ -54,6 +54,7 @@
 #include <GLES2/gl2.h>
 
 #include <weston/compositor.h>
+#include <weston/weston-layout.h>
 
 /* detail debug log */
 #define UIFW_DETAIL_OUT 0                   /* 1=detail debug log/0=no detail log   */
@@ -1267,6 +1268,7 @@ ico_ivi_surfacePropertyNotification(struct weston_layout_surface *ivisurf,
     int         retanima;
     uint32_t    newmask;
     struct uifw_win_surface *usurf;
+    struct weston_view  *ev;
 
     newmask = ((uint32_t)mask) & (~(IVI_NOTIFICATION_OPACITY|IVI_NOTIFICATION_ORIENTATION|
                                     IVI_NOTIFICATION_PIXELFORMAT));
@@ -1315,6 +1317,13 @@ ico_ivi_surfacePropertyNotification(struct weston_layout_surface *ivisurf,
                     usurf->animation.pos_y = usurf->y;
                     usurf->animation.pos_width = usurf->width;
                     usurf->animation.pos_height = usurf->height;
+                    ev = weston_layout_get_weston_view(ivisurf);
+                    if (ev) {
+                        usurf->animation.alpha = ev->alpha;
+                    }
+                    else    {
+                        usurf->animation.alpha = 0.9999f;
+                    }
                     retanima =
                         (*win_mgr_hook_animation)(ICO_WINDOW_MGR_ANIMATION_OPSHOW,
                                                   (void *)usurf);
@@ -1332,6 +1341,13 @@ ico_ivi_surfacePropertyNotification(struct weston_layout_surface *ivisurf,
                     usurf->animation.pos_y = usurf->y;
                     usurf->animation.pos_width = usurf->width;
                     usurf->animation.pos_height = usurf->height;
+                    ev = weston_layout_get_weston_view(ivisurf);
+                    if (ev) {
+                        usurf->animation.alpha = ev->alpha;
+                    }
+                    else    {
+                        usurf->animation.alpha = 0.99999999f;
+                    }
                     retanima =
                         (*win_mgr_hook_animation)(ICO_WINDOW_MGR_ANIMATION_OPHIDE,
                                                   (void *)usurf);
@@ -1494,7 +1510,7 @@ uifw_set_animation(struct wl_client *client, struct wl_resource *resource,
     int     animaid;
     struct uifw_win_surface *usurf = ico_window_mgr_get_usurf_client(surfaceid, client);
 
-    uifw_trace("uifw_set_transition: surf=%08x,type=%x,anim=%s,time=%d",
+    uifw_trace("uifw_set_animation: surf=%08x,type=%x,anim=%s,time=%d",
                surfaceid, type, animation, time);
 
     if (usurf) {
index faeeecf..70c4d2c 100644 (file)
@@ -125,6 +125,7 @@ struct uifw_win_surface {
         uint16_t    pos_y;                  /* start/end Y-coordinate               */
         uint16_t    pos_width;              /* start/end width                      */
         uint16_t    pos_height;             /* start/end height                     */
+        float       alpha;                  /* original alpha                       */
         short       current;                /* animation current percentage         */
         char        state;                  /* animation state                      */
         char        visible;                /* need hide(1)/show(2) at end of animation*/