jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=64890d260f9ee9607aa21e52761bba226a7b0bd1
commit 64890d260f9ee9607aa21e52761bba226a7b0bd1 Author: Wonsik Jung <sid...@samsung.com> Date: Wed Nov 11 11:38:29 2015 +0900 EvasGL: Add error handling for GL_OES_EGL_image/EGL_Image_KHR Summary: Add code for exception case for GL_OES_EGL_image/EGL_Image_KHR These EvasGL's extension functions does not have the code for exception case. e.g. EvasGLImage is NULL. Test Plan: Native Pixmap surface's example is created and changed EvasGLImage's value(e.g. valid data or NULL) Reviewers: raster, spacegrapher, jpeg Subscribers: scholb.kim, JoogabYun, dkdk, cedric Differential Revision: https://phab.enlightenment.org/D3284 --- .../evas/engines/gl_common/evas_gl_api_ext.c | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/src/modules/evas/engines/gl_common/evas_gl_api_ext.c b/src/modules/evas/engines/gl_common/evas_gl_api_ext.c index fd6cb55..7c41575 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_api_ext.c +++ b/src/modules/evas/engines/gl_common/evas_gl_api_ext.c @@ -249,6 +249,13 @@ _evgl_evasglDestroyImage(EvasGLImage image) { EvasGLImage_EGL *img = image; + if (!img) + { + ERR("EvasGLImage is NULL."); + evas_gl_common_error_set(NULL, EVAS_GL_BAD_PARAMETER); + return; + } + EXT_FUNC_EGL(eglDestroyImage)(img->dpy, img->img); free(img); } @@ -257,6 +264,34 @@ static void _evgl_glEvasGLImageTargetTexture2D(GLenum target, EvasGLImage image) { EvasGLImage_EGL *img = image; + EVGL_Resource *rsc; + EVGL_Context *ctx; + + if (!(rsc=_evgl_tls_resource_get())) + { + ERR("Unable to execute GL command. Error retrieving tls"); + return; + } + + if (!rsc->current_eng) + { + ERR("Unable to retrive Current Engine"); + return; + } + + ctx = rsc->current_ctx; + if (!ctx) + { + ERR("Unable to retrive Current Context"); + return; + } + + if (!img) + { + ERR("EvasGLImage is NULL"); + EXT_FUNC(glEGLImageTargetTexture2DOES)(target, NULL); + return; + } EXT_FUNC(glEGLImageTargetTexture2DOES)(target, img->img); } @@ -265,6 +300,34 @@ static void _evgl_glEvasGLImageTargetRenderbufferStorage(GLenum target, EvasGLImage image) { EvasGLImage_EGL *img = image; + EVGL_Resource *rsc; + EVGL_Context *ctx; + + if (!(rsc=_evgl_tls_resource_get())) + { + ERR("Unable to execute GL command. Error retrieving tls"); + return; + } + + if (!rsc->current_eng) + { + ERR("Unable to retrive Current Engine"); + return; + } + + ctx = rsc->current_ctx; + if (!ctx) + { + ERR("Unable to retrive Current Context"); + return; + } + + if (!img) + { + ERR("EvasGLImage is NULL"); + EXT_FUNC(glEGLImageTargetRenderbufferStorageOES)(target, NULL); + return; + } EXT_FUNC(glEGLImageTargetRenderbufferStorageOES)(target, img->img); } --