jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=78d266e1897cc524522caa7bc8c9b8908f1096e8

commit 78d266e1897cc524522caa7bc8c9b8908f1096e8
Author: Minkyoung Kim <sleepi...@gmail.com>
Date:   Tue Apr 11 16:20:07 2017 +0900

    EvasGL: Do internal make current if context changed.
    
    Summary:
    Before, rsc->current_ctx is always same with ctx.
    So checking context change was meaningless.
    From now, it has meaning.
    
    Test Plan: App call evas_gl_make_current more than twice in pixels 
callback. Those surfaces are indirect rendering surface.
    
    Reviewers: jpeg, dkdk, wonsik
    
    Reviewed By: jpeg
    
    Subscribers: cedric
    
    Differential Revision: https://phab.enlightenment.org/D4773
---
 src/modules/evas/engines/gl_common/evas_gl_core.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/modules/evas/engines/gl_common/evas_gl_core.c 
b/src/modules/evas/engines/gl_common/evas_gl_core.c
index d558a9d..c4d3541 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_core.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_core.c
@@ -2460,6 +2460,7 @@ evgl_make_current(void *eng_data, EVGL_Surface *sfc, 
EVGL_Context *ctx)
    Eina_Bool dbg = EINA_FALSE;
    EVGL_Resource *rsc;
    int curr_fbo = 0, curr_draw_fbo = 0, curr_read_fbo = 0;
+   Eina_Bool ctx_changed = EINA_FALSE;
 
    // Check the input validity. If either sfc is valid but ctx is NULL, it's 
also error.
    // sfc can be NULL as evas gl supports surfaceless make current
@@ -2550,6 +2551,10 @@ evgl_make_current(void *eng_data, EVGL_Surface *sfc, 
EVGL_Context *ctx)
         evas_gl_common_error_set(eng_data, EVAS_GL_BAD_CONTEXT);
         return 0;
      }
+
+   if (rsc->current_ctx != ctx)
+     ctx_changed = EINA_TRUE;
+
    rsc->current_ctx = ctx;
    rsc->current_eng = eng_data;
 
@@ -2807,7 +2812,7 @@ evgl_make_current(void *eng_data, EVGL_Surface *sfc, 
EVGL_Context *ctx)
                _framebuffer_create(&ctx->surface_fbo, ctx->version);
 
              // Attach fbo and the buffers
-             if ((rsc->current_ctx != ctx) || (ctx->current_sfc != sfc) || 
(rsc->direct.rendered))
+             if ((ctx_changed) || (ctx->current_sfc != sfc) || 
(rsc->direct.rendered))
                {
                   sfc->current_ctx = ctx;
                   if ((sfc->direct_mem_opt) && (sfc->direct_override))

-- 


Reply via email to