raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5fa3815e01d7d16f04d13a6ebd28e7c5d2d9dba9

commit 5fa3815e01d7d16f04d13a6ebd28e7c5d2d9dba9
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sun Jul 3 15:43:04 2016 +0900

    evas update buf - dont ref and unref outbug as an evas image - it's not
    
    we need calls to ref/unref them from engines, but atm it's ok because
    they dont get deleted until the flush is done and not used after that...
    
    @fix
---
 src/lib/evas/cache/evas_cache_image.c | 7 +++++--
 src/lib/evas/canvas/evas_render.c     | 6 +++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/lib/evas/cache/evas_cache_image.c 
b/src/lib/evas/cache/evas_cache_image.c
index 2cd2e90..21edc94 100644
--- a/src/lib/evas/cache/evas_cache_image.c
+++ b/src/lib/evas/cache/evas_cache_image.c
@@ -965,8 +965,11 @@ evas_cache_image_drop(Image_Entry *im)
              _evas_cache_image_entry_delete(cache, im);
              return;
           }
-        _evas_cache_image_lru_add(im);
-        if (cache) evas_cache_image_flush(cache);
+        if (cache)
+          {
+             _evas_cache_image_lru_add(im);
+             evas_cache_image_flush(cache);
+          }
      }
 }
 
diff --git a/src/lib/evas/canvas/evas_render.c 
b/src/lib/evas/canvas/evas_render.c
index ca6f594..e85e402 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -2771,10 +2771,10 @@ evas_render_updates_internal(Evas *eo_e,
                {
                   ru = malloc(sizeof(*ru));
                   ru->surface = surface;
+                  //XXX: need a way of reffing output surfaces
                   NEW_RECT(ru->area, ux, uy, uw, uh);
                   eina_spinlock_take(&(e->render.lock));
                   e->render.updates = eina_list_append(e->render.updates, ru);
-                  evas_cache_image_ref(surface);
                   eina_spinlock_release(&(e->render.lock));
                }
 
@@ -2952,7 +2952,7 @@ evas_render_updates_internal(Evas *eo_e,
         EINA_LIST_FOREACH(e->render.updates, l, ru)
           {
              post.updated_area = eina_list_append(post.updated_area, ru->area);
-             evas_cache_image_drop(ru->surface);
+             //XXX: need a way of unreffing output surfaces
              ru->surface = NULL;
           }
         eina_spinlock_take(&(e->render.lock));
@@ -3073,7 +3073,7 @@ evas_render_pipe_wakeup(void *data)
            ru->area->x, ru->area->y, ru->area->w, ru->area->h,
            EVAS_RENDER_MODE_ASYNC_END);
         eina_evlog("-render_push", e->evas, 0.0, NULL);
-        evas_cache_image_drop(ru->surface);
+        //XXX: need a way to unref render output surfaces
         ru->surface = NULL;
      }
    eina_evlog("+render_output_flush", e->evas, 0.0, NULL);

-- 


Reply via email to