summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-07-03 15:43:04 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-07-03 15:45:46 +0900
commit5fa3815e01d7d16f04d13a6ebd28e7c5d2d9dba9 (patch)
tree7e82ffdfae2796fbeb12b6992bef6582a52c815b /src
parent6ab167afa1e574d641081554a0ebe80f79645971 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/lib/evas/cache/evas_cache_image.c7
-rw-r--r--src/lib/evas/canvas/evas_render.c6
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)
965 _evas_cache_image_entry_delete(cache, im); 965 _evas_cache_image_entry_delete(cache, im);
966 return; 966 return;
967 } 967 }
968 _evas_cache_image_lru_add(im); 968 if (cache)
969 if (cache) evas_cache_image_flush(cache); 969 {
970 _evas_cache_image_lru_add(im);
971 evas_cache_image_flush(cache);
972 }
970 } 973 }
971} 974}
972 975
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,
2771 { 2771 {
2772 ru = malloc(sizeof(*ru)); 2772 ru = malloc(sizeof(*ru));
2773 ru->surface = surface; 2773 ru->surface = surface;
2774 //XXX: need a way of reffing output surfaces
2774 NEW_RECT(ru->area, ux, uy, uw, uh); 2775 NEW_RECT(ru->area, ux, uy, uw, uh);
2775 eina_spinlock_take(&(e->render.lock)); 2776 eina_spinlock_take(&(e->render.lock));
2776 e->render.updates = eina_list_append(e->render.updates, ru); 2777 e->render.updates = eina_list_append(e->render.updates, ru);
2777 evas_cache_image_ref(surface);
2778 eina_spinlock_release(&(e->render.lock)); 2778 eina_spinlock_release(&(e->render.lock));
2779 } 2779 }
2780 2780
@@ -2952,7 +2952,7 @@ evas_render_updates_internal(Evas *eo_e,
2952 EINA_LIST_FOREACH(e->render.updates, l, ru) 2952 EINA_LIST_FOREACH(e->render.updates, l, ru)
2953 { 2953 {
2954 post.updated_area = eina_list_append(post.updated_area, ru->area); 2954 post.updated_area = eina_list_append(post.updated_area, ru->area);
2955 evas_cache_image_drop(ru->surface); 2955 //XXX: need a way of unreffing output surfaces
2956 ru->surface = NULL; 2956 ru->surface = NULL;
2957 } 2957 }
2958 eina_spinlock_take(&(e->render.lock)); 2958 eina_spinlock_take(&(e->render.lock));
@@ -3073,7 +3073,7 @@ evas_render_pipe_wakeup(void *data)
3073 ru->area->x, ru->area->y, ru->area->w, ru->area->h, 3073 ru->area->x, ru->area->y, ru->area->w, ru->area->h,
3074 EVAS_RENDER_MODE_ASYNC_END); 3074 EVAS_RENDER_MODE_ASYNC_END);
3075 eina_evlog("-render_push", e->evas, 0.0, NULL); 3075 eina_evlog("-render_push", e->evas, 0.0, NULL);
3076 evas_cache_image_drop(ru->surface); 3076 //XXX: need a way to unref render output surfaces
3077 ru->surface = NULL; 3077 ru->surface = NULL;
3078 } 3078 }
3079 eina_evlog("+render_output_flush", e->evas, 0.0, NULL); 3079 eina_evlog("+render_output_flush", e->evas, 0.0, NULL);