buffer: add buffer size functions 41/127341/1
authorBoram Park <boram1288.park@samsung.com>
Tue, 25 Apr 2017 12:04:07 +0000 (21:04 +0900)
committerBoram Park <boram1288.park@samsung.com>
Thu, 27 Apr 2017 04:46:11 +0000 (13:46 +0900)
Change-Id: I3e006384359961d8397bdb5aadf38c2844b02510

src/e_devicemgr_buffer.c
src/e_devicemgr_buffer.h

index c631d07cc4099a57173f5a028a3bc287567a6d94..7218db332941d1e8787fbe5dd7c732baed8584e2 100644 (file)
@@ -1195,3 +1195,78 @@ e_devmgr_buffer_list_print(const char *log_path)
 
    fclose(log_fl);
 }
+
+void
+e_devmgr_buffer_size_get(E_Client *ec, int *bw, int *bh)
+{
+   E_Comp_Wl_Buffer *buffer = e_pixmap_resource_get(ec->pixmap);
+
+   *bw = *bh = 0;
+
+   if (!buffer)
+     {
+        INF("no buffer. using ec(%p) size(%dx%d)", ec, ec->w, ec->h);
+        *bw = ec->w;
+        *bh = ec->h;
+        return;
+     }
+
+   if (buffer->type == E_COMP_WL_BUFFER_TYPE_VIDEO)
+     {
+        tbm_surface_h tbm_surface = wayland_tbm_server_get_surface(NULL, buffer->resource);
+
+        *bw = tbm_surface_get_width(tbm_surface);
+        *bh = tbm_surface_get_height(tbm_surface);
+     }
+   else
+     {
+        *bw = buffer->w;
+        *bh = buffer->h;
+     }
+}
+
+void
+e_devmgr_buffer_transform_scale_size_get(E_Client *ec, int *bw, int *bh)
+{
+   E_Comp_Wl_Buffer *buffer = e_pixmap_resource_get(ec->pixmap);
+   E_Comp_Wl_Buffer_Viewport *vp = &ec->comp_data->scaler.buffer_viewport;
+   int w, h;
+
+   *bw = *bh = 0;
+
+   if (!buffer)
+     {
+        INF("no buffer. using ec(%p) size(%dx%d)", ec, ec->w, ec->h);
+        *bw = ec->w;
+        *bh = ec->h;
+        return;
+     }
+
+   if (buffer->type == E_COMP_WL_BUFFER_TYPE_VIDEO)
+     {
+        tbm_surface_h tbm_surface = wayland_tbm_server_get_surface(NULL, buffer->resource);
+
+        w = tbm_surface_get_width(tbm_surface);
+        h = tbm_surface_get_height(tbm_surface);
+     }
+   else
+     {
+        w = buffer->w;
+        h = buffer->h;
+     }
+
+   switch (vp->buffer.transform)
+     {
+      case WL_OUTPUT_TRANSFORM_90:
+      case WL_OUTPUT_TRANSFORM_270:
+      case WL_OUTPUT_TRANSFORM_FLIPPED_90:
+      case WL_OUTPUT_TRANSFORM_FLIPPED_270:
+        *bw = h / vp->buffer.scale;
+        *bh = w / vp->buffer.scale;
+        break;
+      default:
+        *bw = w / vp->buffer.scale;
+        *bh = h / vp->buffer.scale;
+        break;
+     }
+}
index 91b4acd707117d33bac8f2d09dd1fa72c3d9bf15..a8e3315eeb036754f2a23f882dccbdbd993296d2 100644 (file)
@@ -110,4 +110,7 @@ uint e_devmgr_buffer_get_mills(void);
 int  e_devmgr_buffer_list_length(void);
 void e_devmgr_buffer_list_print(const char *log_path);
 
+void e_devmgr_buffer_size_get(E_Client *ec, int *bw, int *bh);
+void e_devmgr_buffer_transform_scale_size_get(E_Client *ec, int *bw, int *bh);
+
 #endif