summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/efl_canvas_proxy.c
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-09-18 19:59:11 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-09-19 10:51:48 +0900
commit2df8ad36b4b0068ae5ae3f547d2ece4d3c741a76 (patch)
treee8821395cdc6cca75f968d2e7e7decab42f5a94c /src/lib/evas/canvas/efl_canvas_proxy.c
parent1f242afdefd27cc11eb71bc598f4e7903ceb5ea9 (diff)
downloadefl-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.c23
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;