e_desk: add pp zoom 76/138076/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Thu, 6 Jul 2017 06:07:23 +0000 (15:07 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 11 Jul 2017 04:40:42 +0000 (13:40 +0900)
Change-Id: I063227ff678e35723f54e0d7978f583c29da8923
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/bin/e_desk.c

index 1ec3db57a6b237191262d5d59c23e16434096213..7c02ae4557e83f745c544cfee1f27874fb837e5a 100644 (file)
@@ -821,41 +821,60 @@ e_desk_zoom_set(E_Desk *desk, double zoomx, double zoomy, int cx, int cy)
 {
    E_Client *ec;
    Eina_List *l;
-
-   if (!e_config->use_desk_smart_obj)
-     {
-        DBG("Do nothing, Desk Smart Object is disabled");
-        return;
-     }
+   E_Zone *zone = NULL;
+   E_Output *eout = NULL;
 
    E_OBJECT_CHECK(desk);
    E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
 
-   E_DESK_SMART_DATA_GET_OR_RETURN(desk->smart_obj, sd);
-
-   if ((sd->zoom.ratio_x != zoomx) || (sd->zoom.ratio_y != zoomy) ||
-       (sd->zoom.center_x != cx) || (sd->zoom.center_y != cy))
+   if (e_config->use_pp_zoom)
      {
-        sd->zoom.ratio_x = zoomx;
-        sd->zoom.ratio_y = zoomy;
-        sd->zoom.center_x = cx;
-        sd->zoom.center_y = cy;
+        if (e_comp_screen_pp_support())
+          {
+             zone = desk->zone;
+             eout = e_output_find(zone->output_id);
+             if (!eout)
+               {
+                  ERR("e_desk_zoom_set: fail get eout");
+                  return;
+               }
+             if (!e_output_zoom_set(eout, zoomx, zoomy, cx, cy))
+               ERR("e_desk_zoom_set: fail zoom set");
+             else
+               DBG("e_desk_zoom_set: zoomx:%f, zoomy:%f, x:%d, y:%d", zoomx, zoomy, cx, cy);
 
-        _e_desk_object_zoom(desk->smart_obj, zoomx, zoomy, cx, cy);
-        EINA_LIST_FOREACH(sd->clients, l, ec)
-           _e_desk_client_zoom(ec, zoomx, zoomy, cx, cy);
+             return;
+          }
      }
 
-   if (!sd->zoom.enabled)
+   if (e_config->use_desk_smart_obj)
      {
-        sd->zoom.enabled = EINA_TRUE;
+        E_DESK_SMART_DATA_GET_OR_RETURN(desk->smart_obj, sd);
 
-        evas_object_map_enable_set(desk->smart_obj, EINA_TRUE);
-        EINA_LIST_FOREACH(sd->clients, l, ec)
-           evas_object_map_enable_set(ec->frame, EINA_TRUE);
+        if ((sd->zoom.ratio_x != zoomx) || (sd->zoom.ratio_y != zoomy) ||
+            (sd->zoom.center_x != cx) || (sd->zoom.center_y != cy))
+          {
+             sd->zoom.ratio_x = zoomx;
+             sd->zoom.ratio_y = zoomy;
+             sd->zoom.center_x = cx;
+             sd->zoom.center_y = cy;
+
+             _e_desk_object_zoom(desk->smart_obj, zoomx, zoomy, cx, cy);
+             EINA_LIST_FOREACH(sd->clients, l, ec)
+               _e_desk_client_zoom(ec, zoomx, zoomy, cx, cy);
+          }
 
-        /* FIXME TEMP disable hwc */
-        _e_desk_util_comp_hwc_disable_set(EINA_TRUE);
+        if (!sd->zoom.enabled)
+          {
+             sd->zoom.enabled = EINA_TRUE;
+
+             evas_object_map_enable_set(desk->smart_obj, EINA_TRUE);
+             EINA_LIST_FOREACH(sd->clients, l, ec)
+               evas_object_map_enable_set(ec->frame, EINA_TRUE);
+
+             /* FIXME TEMP disable hwc */
+             _e_desk_util_comp_hwc_disable_set(EINA_TRUE);
+          }
      }
 }
 
@@ -864,37 +883,57 @@ e_desk_zoom_unset(E_Desk *desk)
 {
    E_Client *ec;
    Eina_List *l;
-
-   if (!e_config->use_desk_smart_obj)
-     {
-        DBG("Do nothing, Desk Smart Object is disabled");
-        return;
-     }
+   E_Zone *zone = NULL;
+   E_Output *eout = NULL;
 
    E_OBJECT_CHECK(desk);
    E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE);
 
-   E_DESK_SMART_DATA_GET_OR_RETURN(desk->smart_obj, sd);
+   if (e_config->use_pp_zoom)
+     {
+        if (e_comp_screen_pp_support())
+          {
+             zone = desk->zone;
+             eout = e_output_find(zone->output_id);
+             if (!eout)
+               {
+                  ERR("e_desk_zoom_unset: fail get eout");
+                  return;
+               }
 
-   if (!sd->zoom.enabled)
-     return;
+             e_output_zoom_unset(eout);
+             DBG("e_desk_zoom_unset");
 
-   sd->zoom.ratio_x = 1.0;
-   sd->zoom.ratio_y = 1.0;
-   sd->zoom.enabled = EINA_FALSE;
+             return;
+          }
+     }
 
-   evas_object_map_enable_set(desk->smart_obj, EINA_FALSE);
-   EINA_LIST_FOREACH(sd->clients, l, ec)
+   if (e_config->use_desk_smart_obj)
      {
-        /* NOTE Is it really necessary?
-         * Why isn't it enough to just call evas_object_map_enable_set(false)? */
-        _e_desk_client_zoom(ec, sd->zoom.ratio_x, sd->zoom.ratio_y,
-                            sd->zoom.center_x, sd->zoom.center_y);
-        evas_object_map_enable_set(ec->frame, EINA_FALSE);
-     }
+        E_DESK_SMART_DATA_GET_OR_RETURN(desk->smart_obj, sd);
+
+        if (!sd->zoom.enabled)
+          return;
+
+        sd->zoom.ratio_x = 1.0;
+        sd->zoom.ratio_y = 1.0;
+        sd->zoom.center_x = 0;
+        sd->zoom.center_y = 0;
+        sd->zoom.enabled = EINA_FALSE;
 
-   /* FIXME TEMP enable hwc */
-   _e_desk_util_comp_hwc_disable_set(EINA_FALSE);
+        evas_object_map_enable_set(desk->smart_obj, EINA_FALSE);
+        EINA_LIST_FOREACH(sd->clients, l, ec)
+          {
+             /* NOTE Is it really necessary?
+              * Why isn't it enough to just call evas_object_map_enable_set(false)? */
+             _e_desk_client_zoom(ec, sd->zoom.ratio_x, sd->zoom.ratio_y,
+                                 sd->zoom.center_x, sd->zoom.center_y);
+             evas_object_map_enable_set(ec->frame, EINA_FALSE);
+          }
+
+        /* FIXME TEMP enable hwc */
+        _e_desk_util_comp_hwc_disable_set(EINA_FALSE);
+     }
 }
 
 E_API void