video: fix clipping destination region of tdm info. 17/217417/1
authorSeunghun Lee <shiin.lee@samsung.com>
Mon, 11 Nov 2019 10:14:31 +0000 (19:14 +0900)
committerSeunghun Lee <shiin.lee@samsung.com>
Mon, 11 Nov 2019 10:14:31 +0000 (19:14 +0900)
A region of clipper should be determined according to output transform.

Change-Id: I7ef2d014ede203a2ee8ce41a39f575b55f2ef1b8

src/bin/video/iface/e_video_hwc.c

index 5aa94183bde182f8efb6fc9e5cf521126e222844..90fa4ad2ee40ee3e424481d0a42c0ed23243fad8 100644 (file)
@@ -814,13 +814,23 @@ _e_video_hwc_coord_transform(Eina_Rectangle *src_rect, Eina_Rectangle *dst_rect,
  * clipped accordingly.
  */
 static void
-_e_video_hwc_tdm_viewport_clip(E_Video_Hwc_Geometry *in_out, E_Zone *zone)
+_e_video_hwc_tdm_viewport_clip(E_Video_Hwc_Geometry *in_out, E_Zone *zone, int transform)
 {
    Eina_Rectangle *dst_rect, *src_rect;
    Eina_Rectangle new_dst_rect, clip_rect;
    Evas_Point p[2];
 
-   EINA_RECTANGLE_SET(&clip_rect, zone->x, zone->y, zone->w, zone->h);
+   switch (transform & 0x3)
+     {
+      case WL_OUTPUT_TRANSFORM_90:
+      case WL_OUTPUT_TRANSFORM_270:
+         EINA_RECTANGLE_SET(&clip_rect, zone->x, zone->y, zone->h, zone->w);
+         break;
+      default:
+         EINA_RECTANGLE_SET(&clip_rect, zone->x, zone->y, zone->w, zone->h);
+         break;
+     }
+
    src_rect = &in_out->input_r;
    dst_rect = &in_out->tdm.output_r;
 
@@ -945,7 +955,7 @@ _e_video_hwc_geometry_tdm_config_update(E_Client *ec, E_Video_Hwc_Geometry *out)
        ec, EINA_RECTANGLE_ARGS(&out->output_r), out->transform, transform,
        EINA_RECTANGLE_ARGS(&out->tdm.output_r), out->tdm.transform);
 
-   _e_video_hwc_tdm_viewport_clip(out, zone);
+   _e_video_hwc_tdm_viewport_clip(out, zone, output->transform);
 
    return;
 normal: