hwc : cancel hwc if surface is not fullfill the fb_target hw layer 44/93244/1
authorJuyeon Lee <juyeonne.lee@samsung.com>
Fri, 21 Oct 2016 08:16:42 +0000 (17:16 +0900)
committerJuyeon Lee <juyeonne.lee@samsung.com>
Fri, 21 Oct 2016 08:16:42 +0000 (17:16 +0900)
Change-Id: I6ecf0266834cf57f047a52151d231a05542e7e85

src/bin/e_comp.c
src/bin/e_desk.c

index 7c54b59c98cb1d6d0ce8fef4a86cee5f3a276686..ee11b36a0f400e194a2506f39a7b2bf918fecbcd 100644 (file)
@@ -600,7 +600,20 @@ _e_comp_hwc_usable(void)
                   if (e_plane_is_fb_target(ep))
                     {
                        ep_fb = ep;
-                       if (ep->prepare_ec != NULL) return EINA_TRUE;
+
+                       // TODO: query if the hw layer don't support smaller buffer assignment
+                       if (ep->prepare_ec &&
+                           ((ep->prepare_ec->x != zone->x) || (ep->prepare_ec->y != zone->y) ||
+                            (ep->prepare_ec->w != zone->w) || (ep->prepare_ec->h != zone->h)))
+                         {
+                            // if client geometry is not 1 on 1 match with zone's,
+                            // in this case output(esp. fb target) may not support hwc, than let's composite
+                            return EINA_FALSE;
+                         }
+                       else if (ep->prepare_ec != NULL)
+                         {
+                            return EINA_TRUE;
+                         }
                     }
                   continue;
                }
index b4310282baec718e016291d4cde0dec521c89bad..4eb02a9c1205f38889fab6e79c11e6e92d6c0065 100644 (file)
@@ -771,6 +771,7 @@ e_desk_geometry_set(E_Desk *desk, int x, int y, int w, int h)
      }
 
    evas_object_geometry_set(desk->smart_obj, x, y, w, h);
+   e_comp_render_queue();
 }
 
 static void