summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2018-01-16 18:35:23 -0500
committerMike Blumenkrantz <zmike@osg.samsung.com>2018-01-16 18:36:11 -0500
commit683f76beab59f0df351c5611f7e0fba5e221978c (patch)
tree228e1c656bb1f7c67420cd4976e402a1d49eda14
parentf4cff7229f673e79279cdf0ed51243eb00f631a2 (diff)
downloadenlightenment-683f76beab59f0df351c5611f7e0fba5e221978c.tar.gz
add a lot of null checks to wayland egl init
fix T6617
-rw-r--r--src/bin/e_comp_wl.c22
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 */