diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2017-09-18 19:59:11 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2017-09-19 10:51:48 +0900 |
commit | 2df8ad36b4b0068ae5ae3f547d2ece4d3c741a76 (patch) | |
tree | e8821395cdc6cca75f968d2e7e7decab42f5a94c /src/lib/evas/canvas/efl_canvas_proxy.c | |
parent | 1f242afdefd27cc11eb71bc598f4e7903ceb5ea9 (diff) | |
download | efl-2df8ad36b4b0068ae5ae3f547d2ece4d3c741a76.tar.gz |
evas: Use Eina.Slice on the stack (gfx.buffer)
Diffstat (limited to 'src/lib/evas/canvas/efl_canvas_proxy.c')
-rw-r--r-- | src/lib/evas/canvas/efl_canvas_proxy.c | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/src/lib/evas/canvas/efl_canvas_proxy.c b/src/lib/evas/canvas/efl_canvas_proxy.c index 26bbd942ab..6b603695dc 100644 --- a/src/lib/evas/canvas/efl_canvas_proxy.c +++ b/src/lib/evas/canvas/efl_canvas_proxy.c @@ -259,9 +259,8 @@ _proxy_image_get(Evas_Image_Data *o) return source->proxy->surface; } -EOLIAN static Eina_Bool +EOLIAN static Eina_Rw_Slice _efl_canvas_proxy_efl_gfx_buffer_buffer_map(Eo *eo_obj, void *_pd EINA_UNUSED, - Eina_Rw_Slice *slice, Efl_Gfx_Buffer_Access_Mode mode, const Eina_Rect *region, Efl_Gfx_Colorspace cspace, int plane, @@ -270,15 +269,10 @@ _efl_canvas_proxy_efl_gfx_buffer_buffer_map(Eo *eo_obj, void *_pd EINA_UNUSED, Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); Evas_Image_Data *o = efl_data_scope_get(eo_obj, EFL_CANVAS_IMAGE_INTERNAL_CLASS); int s = 0, width = 0, height = 0; - Eina_Bool ret = EINA_FALSE; + Eina_Rw_Slice slice = {}; int x, y, w, h; void *image; - EINA_SAFETY_ON_NULL_RETURN_VAL(slice, EINA_FALSE); - - slice->len = 0; - slice->mem = NULL; - if (!ENFN->image_data_map) goto end; // not implemented @@ -327,30 +321,29 @@ _efl_canvas_proxy_efl_gfx_buffer_buffer_map(Eo *eo_obj, void *_pd EINA_UNUSED, goto end; } - if (ENFN->image_data_map(ENC, &o->engine_data, slice, &s, x, y, w, h, cspace, mode, plane)) + if (ENFN->image_data_map(ENC, &o->engine_data, &slice, &s, x, y, w, h, cspace, mode, plane)) { DBG("map(%p, %d,%d %dx%d plane:%d) -> " EINA_SLICE_FMT, - eo_obj, x, y, w, h, plane, EINA_SLICE_PRINT(*slice)); - ret = EINA_TRUE; + eo_obj, x, y, w, h, plane, EINA_SLICE_PRINT(slice)); } else DBG("map(%p, %d,%d %dx%d plane:%d) -> (null)", eo_obj, x, y, w, h, plane); end: if (stride) *stride = s; - return ret; + return slice; } EOLIAN static Eina_Bool _efl_canvas_proxy_efl_gfx_buffer_buffer_unmap(Eo *eo_obj, void *_pd EINA_UNUSED, - const Eina_Rw_Slice *slice) + const Eina_Rw_Slice slice) { Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); Evas_Image_Data *o = efl_data_scope_get(eo_obj, EFL_CANVAS_IMAGE_INTERNAL_CLASS); - if (!slice || !ENFN->image_data_unmap || !o->engine_data) + if (!slice.mem || !ENFN->image_data_unmap || !o->engine_data) return EINA_FALSE; - if (!ENFN->image_data_unmap(ENC, o->engine_data, slice)) + if (!ENFN->image_data_unmap(ENC, o->engine_data, &slice)) return EINA_FALSE; return EINA_TRUE; |