e_plane: use buffer of comp_data instead resouce of pixmap. 67/106167/4
authorChangyeon Lee <cyeon.lee@samsung.com>
Thu, 15 Dec 2016 11:06:20 +0000 (20:06 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Wed, 21 Dec 2016 08:53:42 +0000 (00:53 -0800)
- resouce of pixmap doens't always set last commited buffer.

Change-Id: I642ec996749a076e9d6ea07df59f5f943a04632f

src/bin/e_plane.c
src/bin/e_plane_renderer.c

index f5e8c0e..b64ddef 100644 (file)
@@ -26,6 +26,17 @@ static Eina_Bool plane_trace_debug = 0;
 
 E_API int E_EVENT_PLANE_WIN_CHANGE = -1;
 
+static E_Comp_Wl_Buffer *
+_get_comp_wl_buffer(E_Client *ec)
+{
+   E_Comp_Wl_Client_Data *cdata = (E_Comp_Wl_Client_Data*)ec->comp_data;
+   if (!cdata) return NULL;
+
+   E_Comp_Wl_Buffer_Ref *buffer_ref = &cdata ->buffer_ref;
+
+   return buffer_ref->buffer;
+}
+
 static struct wl_resource *
 _get_wl_buffer(E_Client *ec)
 {
@@ -352,8 +363,7 @@ static tbm_surface_h
 _e_plane_surface_from_client_acquire(E_Plane *plane)
 {
    E_Client *ec = plane->ec;
-   E_Pixmap *pixmap = ec->pixmap;
-   E_Comp_Wl_Buffer *buffer = e_pixmap_resource_get(pixmap);
+   E_Comp_Wl_Buffer *buffer = _get_comp_wl_buffer(ec);
    E_Comp_Wl_Data *wl_comp_data = (E_Comp_Wl_Data *)e_comp->wl_comp_data;
    E_Plane_Renderer *renderer = plane->renderer;
    tbm_surface_h tsurface = NULL;
@@ -863,7 +873,7 @@ e_plane_commit_data_aquire(E_Plane *plane)
              data->tsurface = plane->tsurface;
              tbm_surface_internal_ref(data->tsurface);
              data->ec = plane->ec;
-             e_comp_wl_buffer_reference(&data->buffer_ref, e_pixmap_resource_get(plane->ec->pixmap));
+             e_comp_wl_buffer_reference(&data->buffer_ref, _get_comp_wl_buffer(plane->ec));
 
              /* set the update_exist to be false */
              e_plane_renderer_update_exist_set(plane->renderer, EINA_FALSE);
index 885134b..ea7227a 100644 (file)
@@ -43,6 +43,17 @@ struct _E_Plane_Renderer_Client
 static Eina_List *plane_hdlrs = NULL;
 static Eina_Bool renderer_trace_debug = 0;
 
+static E_Comp_Wl_Buffer *
+_get_comp_wl_buffer(E_Client *ec)
+{
+   E_Comp_Wl_Client_Data *cdata = (E_Comp_Wl_Client_Data*)ec->comp_data;
+   if (!cdata) return NULL;
+
+   E_Comp_Wl_Buffer_Ref *buffer_ref = &cdata ->buffer_ref;
+
+   return buffer_ref->buffer;
+}
+
 static struct wl_resource *
 _get_wl_buffer(E_Client *ec)
 {
@@ -119,7 +130,6 @@ _e_plane_renderer_client_copied_surface_create(E_Plane_Renderer_Client *renderer
 {
    tbm_surface_h tsurface = NULL;
    tbm_surface_h new_tsurface = NULL;
-   E_Pixmap *pixmap = NULL;
    E_Comp_Wl_Buffer *buffer = NULL;
    tbm_surface_info_s src_info, dst_info;
    E_Comp_Wl_Data *wl_comp_data = (E_Comp_Wl_Data *)e_comp->wl_comp_data;
@@ -127,12 +137,10 @@ _e_plane_renderer_client_copied_surface_create(E_Plane_Renderer_Client *renderer
    E_Client *ec = renderer_client->ec;
    E_Plane_Renderer *renderer = renderer_client->renderer;
 
-   pixmap = ec->pixmap;
-
    if (refresh)
      e_pixmap_image_refresh(ec->pixmap);
 
-   buffer = e_pixmap_resource_get(pixmap);
+   buffer = _get_comp_wl_buffer(ec);
    if (buffer)
      {
         tsurface = wayland_tbm_server_get_surface(wl_comp_data->tbm.server, buffer->resource);
@@ -430,11 +438,10 @@ _e_plane_renderer_client_surface_flags_get(E_Plane_Renderer_Client *renderer_cli
    tbm_surface_h tsurface = NULL;
    E_Comp_Wl_Data *wl_comp_data = (E_Comp_Wl_Data *)e_comp->wl_comp_data;
    E_Client *ec = renderer_client->ec;
-   E_Pixmap *pixmap = ec->pixmap;
    uint32_t flags = 0;
    E_Comp_Wl_Buffer *buffer = NULL;
 
-   buffer = e_pixmap_resource_get(pixmap);
+   buffer = _get_comp_wl_buffer(ec);
    if (!buffer) return 0;
 
    switch (buffer->type)
@@ -1269,7 +1276,6 @@ e_plane_renderer_client_surface_recieve(E_Plane_Renderer_Client *renderer_client
    tbm_surface_h tsurface = NULL;
    E_Comp_Wl_Data *wl_comp_data = (E_Comp_Wl_Data *)e_comp->wl_comp_data;
    E_Client *ec = NULL;
-   E_Pixmap *pixmap = NULL;
    uint32_t flags = 0;
    E_Comp_Wl_Buffer *buffer = NULL;
    E_Plane_Renderer *renderer = NULL;
@@ -1280,9 +1286,8 @@ e_plane_renderer_client_surface_recieve(E_Plane_Renderer_Client *renderer_client
 
    ec = renderer_client->ec;
    renderer = renderer_client->renderer;
-   pixmap = ec->pixmap;
 
-   buffer = e_pixmap_resource_get(pixmap);
+   buffer = _get_comp_wl_buffer(ec);
    EINA_SAFETY_ON_NULL_RETURN_VAL(buffer, NULL);
 
    tsurface = wayland_tbm_server_get_surface(wl_comp_data->tbm.server, buffer->resource);