diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2018-01-16 18:35:23 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2018-01-16 18:36:11 -0500 |
commit | 683f76beab59f0df351c5611f7e0fba5e221978c (patch) | |
tree | 228e1c656bb1f7c67420cd4976e402a1d49eda14 | |
parent | f4cff7229f673e79279cdf0ed51243eb00f631a2 (diff) | |
download | enlightenment-683f76beab59f0df351c5611f7e0fba5e221978c.tar.gz |
add a lot of null checks to wayland egl init
fix T6617
-rw-r--r-- | src/bin/e_comp_wl.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c index b0ebe6b64b..b233c90df0 100644 --- a/src/bin/e_comp_wl.c +++ b/src/bin/e_comp_wl.c @@ -2946,10 +2946,12 @@ static void _e_comp_wl_gl_shutdown(void) { if (!e_comp->gl) return; - if (e_comp_wl->wl.glapi->evasglUnbindWaylandDisplay) + if (e_comp_wl->wl.glapi && e_comp_wl->wl.glapi->evasglUnbindWaylandDisplay) e_comp_wl->wl.glapi->evasglUnbindWaylandDisplay(e_comp_wl->wl.gl, e_comp_wl->wl.disp); - evas_gl_surface_destroy(e_comp_wl->wl.gl, e_comp_wl->wl.glsfc); - evas_gl_context_destroy(e_comp_wl->wl.gl, e_comp_wl->wl.glctx); + if (e_comp_wl->wl.glsfc) + evas_gl_surface_destroy(e_comp_wl->wl.gl, e_comp_wl->wl.glsfc); + if (e_comp_wl->wl.glctx) + evas_gl_context_destroy(e_comp_wl->wl.gl, e_comp_wl->wl.glctx); evas_gl_free(e_comp_wl->wl.gl); evas_gl_config_free(e_comp_wl->wl.glcfg); } @@ -2960,16 +2962,22 @@ _e_comp_wl_gl_init(void) e_comp_wl->wl.gl = evas_gl_new(ecore_evas_get(e_comp->ee)); if (!e_comp_wl->wl.gl) return; e_comp_wl->wl.glctx = evas_gl_context_create(e_comp_wl->wl.gl, NULL); + if (!e_comp_wl->wl.glctx) goto end; e_comp_wl->wl.glcfg = evas_gl_config_new(); + if (!e_comp_wl->wl.glcfg) goto end; e_comp_wl->wl.glsfc = evas_gl_surface_create(e_comp_wl->wl.gl, e_comp_wl->wl.glcfg, 1, 1); - evas_gl_make_current(e_comp_wl->wl.gl, e_comp_wl->wl.glsfc, e_comp_wl->wl.glctx); + if (!e_comp_wl->wl.glsfc) goto end; + if (!evas_gl_make_current(e_comp_wl->wl.gl, e_comp_wl->wl.glsfc, e_comp_wl->wl.glctx)) goto end; e_comp_wl->wl.glapi = evas_gl_context_api_get(e_comp_wl->wl.gl, e_comp_wl->wl.glctx); if (e_comp_wl->wl.glapi->evasglBindWaylandDisplay) e_comp->gl = e_comp_wl->wl.glapi->evasglBindWaylandDisplay(e_comp_wl->wl.gl, e_comp_wl->wl.disp); if (e_comp->gl) - e_util_env_set("ELM_ACCEL", "gl"); - else - _e_comp_wl_gl_shutdown(); + { + e_util_env_set("ELM_ACCEL", "gl"); + return; + } +end: + _e_comp_wl_gl_shutdown(); } /* public functions */ |