diff options
Diffstat (limited to 'src/modules/evas/engines/gl_generic/evas_engine.c')
-rw-r--r-- | src/modules/evas/engines/gl_generic/evas_engine.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c b/src/modules/evas/engines/gl_generic/evas_engine.c index 2cf26ab235..4845c7a47c 100644 --- a/src/modules/evas/engines/gl_generic/evas_engine.c +++ b/src/modules/evas/engines/gl_generic/evas_engine.c @@ -63,7 +63,8 @@ _context_restore(void) { if (rsc->id == evgl_engine->main_tid) { - evgl_make_current(rsc->stored.data, rsc->stored.surface, rsc->stored.context); + if (rsc->stored.data) + evgl_make_current(rsc->stored.data, rsc->stored.surface, rsc->stored.context); _need_context_restore = EINA_FALSE; } } @@ -1503,14 +1504,13 @@ eng_gl_make_current(void *data, void *surface, void *context) Render_Engine_GL_Generic *re = data; EVGL_Surface *sfc = (EVGL_Surface *)surface; EVGL_Context *ctx = (EVGL_Context *)context; + int ret = 0; // TODO: Add check for main thread before flush - EVGLINIT(data, 0); - if (ctx) + if ((sfc) && (ctx)) { Evas_Engine_GL_Context *gl_context; - CONTEXT_STORE(data, surface, context); gl_context = re->window_gl_context_get(re->software.ob); if ((gl_context->havestuff) || @@ -1523,7 +1523,10 @@ eng_gl_make_current(void *data, void *surface, void *context) } } - return evgl_make_current(data, sfc, ctx); + ret = evgl_make_current(data, sfc, ctx); + CONTEXT_STORE(data, surface, context); + + return ret; } static void * @@ -1606,7 +1609,7 @@ eng_gl_api_get(void *data, int version) ERR("Version not supported!"); return NULL; } - ret = evgl_api_get(data, version); + ret = evgl_api_get(data, version, EINA_TRUE); //Disable GLES3 support if symbols not present if ((!ret) && (version == EVAS_GL_GLES_3_X)) |