discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=36586fbf9cd84bacf6568f5c2eb8ba131f1e1b11

commit 36586fbf9cd84bacf6568f5c2eb8ba131f1e1b11
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Tue Feb 16 13:33:25 2016 -0600

    Remove wayland buffer reference
    
    This code is similar to code in weston, but doesn't really work properly
    for us in E, since this can blow up buffers behind the async renderer's
    back.
    
    The rest of the reference code has been pushed into e_pixmap, so we can
    kill this all now.
---
 src/bin/e_comp_wl.c | 35 -----------------------------------
 src/bin/e_comp_wl.h | 10 ----------
 2 files changed, 45 deletions(-)

diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 47ff0bd..a9db71f 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -729,16 +729,6 @@ _e_comp_wl_evas_cb_color_set(void *data, Evas_Object *obj, 
void *event EINA_UNUS
 }
 
 static void
-_e_comp_wl_buffer_reference_cb_destroy(struct wl_listener *listener, void 
*data)
-{
-   E_Comp_Wl_Buffer_Ref *ref;
-
-   ref = container_of(listener, E_Comp_Wl_Buffer_Ref, destroy_listener);
-   if ((E_Comp_Wl_Buffer *)data != ref->buffer) return;
-   ref->buffer = NULL;
-}
-
-static void
 _e_comp_wl_buffer_cb_destroy(struct wl_listener *listener, void *data 
EINA_UNUSED)
 {
    E_Comp_Wl_Buffer *buffer;
@@ -1984,7 +1974,6 @@ _e_comp_wl_subsurface_create(E_Client *ec, E_Client *epc, 
uint32_t id, struct wl
    _e_comp_wl_surface_state_init(&sdata->cached, ec->w, ec->h);
 
    /* set subsurface data properties */
-   sdata->cached_buffer_ref.buffer = NULL;
    sdata->resource = res;
    sdata->synchronized = EINA_TRUE;
    sdata->parent = epc;
@@ -2695,30 +2684,6 @@ e_comp_wl_subsurface_commit(E_Client *ec)
    return EINA_TRUE;
 }
 
-EINTERN void
-e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, E_Comp_Wl_Buffer *buffer)
-{
-   if ((ref->buffer) && (buffer != ref->buffer))
-     {
-        ref->buffer->busy--;
-        if (ref->buffer->busy == 0)
-          {
-             if (!wl_resource_get_client(ref->buffer->resource)) return;
-             wl_resource_queue_event(ref->buffer->resource, WL_BUFFER_RELEASE);
-          }
-        wl_list_remove(&ref->destroy_listener.link);
-     }
-
-   if ((buffer) && (buffer != ref->buffer))
-     {
-        buffer->busy++;
-        wl_signal_add(&buffer->destroy_signal, &ref->destroy_listener);
-     }
-
-   ref->buffer = buffer;
-   ref->destroy_listener.notify = _e_comp_wl_buffer_reference_cb_destroy;
-}
-
 /**
  * Get the buffer for a given resource.
  *
diff --git a/src/bin/e_comp_wl.h b/src/bin/e_comp_wl.h
index d60bb63..e7df72a 100644
--- a/src/bin/e_comp_wl.h
+++ b/src/bin/e_comp_wl.h
@@ -43,7 +43,6 @@
    })
 
 typedef struct _E_Comp_Wl_Buffer E_Comp_Wl_Buffer;
-typedef struct _E_Comp_Wl_Buffer_Ref E_Comp_Wl_Buffer_Ref;
 typedef struct _E_Comp_Wl_Subsurf_Data E_Comp_Wl_Subsurf_Data;
 typedef struct _E_Comp_Wl_Surface_State E_Comp_Wl_Surface_State;
 typedef struct _E_Comp_Wl_Client_Data E_Comp_Wl_Client_Data;
@@ -64,12 +63,6 @@ struct _E_Comp_Wl_Buffer
    uint32_t busy;
 };
 
-struct _E_Comp_Wl_Buffer_Ref
-{
-   E_Comp_Wl_Buffer *buffer;
-   struct wl_listener destroy_listener;
-};
-
 struct _E_Comp_Wl_Surface_State
 {
    int sx, sy;
@@ -95,7 +88,6 @@ struct _E_Comp_Wl_Subsurf_Data
      } position;
 
    E_Comp_Wl_Surface_State cached;
-   E_Comp_Wl_Buffer_Ref cached_buffer_ref;
 
    Eina_Bool synchronized;
 };
@@ -287,7 +279,6 @@ struct _E_Comp_Wl_Client_Data
         E_Shell_Data *data;
      } shell;
 
-   E_Comp_Wl_Buffer_Ref buffer_ref;
    E_Comp_Wl_Surface_State pending;
 
    Eina_List *frames;
@@ -336,7 +327,6 @@ EINTERN struct wl_resource *e_comp_wl_surface_create(struct 
wl_client *client, i
 EINTERN void e_comp_wl_surface_destroy(struct wl_resource *resource);
 EINTERN Eina_Bool e_comp_wl_surface_commit(E_Client *ec);
 EINTERN Eina_Bool e_comp_wl_subsurface_commit(E_Client *ec);
-EINTERN void e_comp_wl_buffer_reference(E_Comp_Wl_Buffer_Ref *ref, 
E_Comp_Wl_Buffer *buffer);
 E_API E_Comp_Wl_Buffer *e_comp_wl_buffer_get(struct wl_resource *resource);
 
 E_API struct wl_signal e_comp_wl_surface_create_signal_get(void);

-- 


Reply via email to