e_hwc_window: fix destination position according to geometry of zone 20/271320/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Tue, 25 Jan 2022 08:07:12 +0000 (17:07 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Fri, 18 Feb 2022 02:15:50 +0000 (11:15 +0900)
left top position of output coordinate is (0,0) so it need to adjust
destination position

Change-Id: I5df7df9b55a6cd4256819d301bc0c41aa8a13e51

src/bin/e_hwc_window.c

index 9537f6f..3176959 100644 (file)
@@ -1186,6 +1186,7 @@ _e_hwc_window_info_get(E_Hwc_Window *hwc_window, tdm_hwc_window_info *hwc_win_in
    E_Client *ec = NULL;
    tbm_surface_h tsurface = NULL;
    tbm_surface_info_s surf_info = {0};
+   E_Zone *zone;
    int transform;
    int x, y, w, h;
 
@@ -1196,6 +1197,9 @@ _e_hwc_window_info_get(E_Hwc_Window *hwc_window, tdm_hwc_window_info *hwc_win_in
    hwc = hwc_window->hwc;
    EINA_SAFETY_ON_NULL_RETURN_VAL(hwc, EINA_FALSE);
 
+   zone = ec->zone;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(zone, EINA_FALSE);
+
    output = hwc->output;
    EINA_SAFETY_ON_NULL_RETURN_VAL(output, EINA_FALSE);
 
@@ -1216,8 +1220,8 @@ _e_hwc_window_info_get(E_Hwc_Window *hwc_window, tdm_hwc_window_info *hwc_win_in
 
    e_client_geometry_get(ec, &x, &y, &w, &h);
 
-   hwc_win_info->dst_pos.x = x;
-   hwc_win_info->dst_pos.y = y;
+   hwc_win_info->dst_pos.x = x - zone->x;
+   hwc_win_info->dst_pos.y = y - zone->y;
 
    if (output->config.rotation > 0)
      {
@@ -1296,6 +1300,8 @@ _e_hwc_window_video_info_get(E_Hwc_Window *hwc_window, tdm_hwc_window_info *hwc_
 {
    E_Client *ec = NULL;
    E_Client_Video_Info vinfo;
+   E_Zone *zone;
+   E_Hwc *hwc;
 
    if (!e_hwc_window_is_video(hwc_window)) return EINA_FALSE;
 
@@ -1303,12 +1309,21 @@ _e_hwc_window_video_info_get(E_Hwc_Window *hwc_window, tdm_hwc_window_info *hwc_
    EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
    EINA_SAFETY_ON_TRUE_RETURN_VAL(e_object_is_del(E_OBJECT(ec)), EINA_FALSE);
 
+   hwc = hwc_window->hwc;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(hwc, EINA_FALSE);
+
+   zone = ec->zone;
+   EINA_SAFETY_ON_NULL_RETURN_VAL(zone, EINA_FALSE);
+
    if (!e_client_video_info_get(ec, &vinfo))
      {
         EHWERR("Video window does not get the video info.", hwc_window->ec, hwc_window->hwc, hwc_window);
         return EINA_FALSE;
      }
 
+   vinfo.dst_pos.x -= zone->x;
+   vinfo.dst_pos.y -= zone->y;
+
    memcpy(&hwc_win_info->src_config, &vinfo.src_config, sizeof(tdm_info_config));
    memcpy(&hwc_win_info->dst_pos, &vinfo.dst_pos, sizeof(tdm_pos));
    hwc_win_info->transform = vinfo.transform;