e_comp_wl_rsm: get E_Comp_Wl_Buffer from E_Comp_Wl_Client_Data 58/231458/1
authorChangyeon Lee <cyeon.lee@samsung.com>
Wed, 22 Apr 2020 05:11:34 +0000 (14:11 +0900)
committerChangyeon Lee <cyeon.lee@samsung.com>
Wed, 22 Apr 2020 05:13:29 +0000 (14:13 +0900)
resource of e_pixmap is set even if buffer flush is done.
if remote surface use resouce of pixmap,
remote_surface send buffer before uniconify render done.

Change-Id: Id3abf86beee7bd1b384636d3cd70bfb61b5eb6a6

src/bin/e_comp_wl_rsm.c

index 4740b2d590893b219972fa6cce424ad3a55a2632..2f7a39d28bb9ccef774b384d87e28deffec1a651 100644 (file)
@@ -501,6 +501,19 @@ _remote_provider_find(E_Client *ec)
    return provider;
 }
 
+static E_Comp_Wl_Buffer *
+_remote_surface_comp_wl_buffer_get(E_Client *ec)
+{
+   E_Comp_Wl_Client_Data *cdata = NULL;
+
+   if (!ec) return NULL;
+
+   cdata = ec->comp_data;
+   if (!cdata) return NULL;
+
+   return cdata->buffer_ref.buffer;
+}
+
 static tbm_surface_h
 _remote_surface_get_tbm_surface_from_ns(E_Client *ec)
 {
@@ -715,7 +728,7 @@ _remote_surface_buff_send(E_Comp_Wl_Remote_Surface *rs)
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(src_ec, EINA_FALSE);
 
-   buff = e_pixmap_resource_get(src_ec->pixmap);
+   buff = _remote_surface_comp_wl_buffer_get(src_ec);
    tbm_surface = _remote_surface_get_tbm_surface_from_ns(src_ec);
 
    if ((buff) || (tbm_surface))
@@ -930,7 +943,7 @@ _remote_surface_bind_client(E_Comp_Wl_Remote_Surface *remote_surface, E_Client *
 
              EINA_SAFETY_ON_NULL_GOTO(remote_surface->provider->common.ec, bind_ec_set);
 
-             buffer = e_pixmap_resource_get(remote_surface->provider->common.ec->pixmap);
+             buffer = _remote_surface_comp_wl_buffer_get(remote_surface->provider->common.ec);
              EINA_SAFETY_ON_NULL_GOTO(buffer, bind_ec_set);
 
              _remote_surface_changed_buff_protocol_send(remote_surface,
@@ -961,7 +974,7 @@ bind_ec_set:
           {
              E_Comp_Wl_Buffer *buffer;
 
-             buffer = e_pixmap_resource_get(remote_surface->provider->common.ec->pixmap);
+             buffer = _remote_surface_comp_wl_buffer_get(remote_surface->provider->common.ec);
              EINA_SAFETY_ON_NULL_RETURN(buffer);
 
              _e_comp_wl_remote_surface_state_buffer_set(&remote_surface->bind_ec->comp_data->pending, buffer);
@@ -1532,7 +1545,7 @@ _remote_surface_cb_redirect(struct wl_client *client, struct wl_resource *resour
           tizen_remote_surface_send_input_event_filter(resource,
                                                        remote_surface->provider->input_event_filter);
 
-        buffer = e_pixmap_resource_get(remote_surface->provider->common.ec->pixmap);
+        buffer = _remote_surface_comp_wl_buffer_get(remote_surface->provider->common.ec);
         tbm_surface = _remote_surface_get_tbm_surface_from_ns(remote_surface->provider->common.ec);
         EINA_SAFETY_ON_FALSE_RETURN((buffer) || (tbm_surface));
 
@@ -1565,7 +1578,7 @@ _remote_surface_cb_redirect(struct wl_client *client, struct wl_resource *resour
 
         remote_surface->redirect = EINA_TRUE;
 
-        buffer = e_pixmap_resource_get(remote_surface->source->common.ec->pixmap);
+        buffer = _remote_surface_comp_wl_buffer_get(remote_surface->source->common.ec);
         tbm_surface = _remote_surface_get_tbm_surface_from_ns(remote_surface->source->common.ec);
 
         if ((buffer) || (tbm_surface))