Add fpgl-call error handling when makecurrent=null (instead of assertion)
authorHaegeun Park <haegeun.park@samsung.com>
Mon, 16 Apr 2012 04:34:32 +0000 (21:34 -0700)
committerHaegeun Park <haegeun.park@samsung.com>
Mon, 16 Apr 2012 04:34:32 +0000 (21:34 -0700)
Add new option 'COREGL_TRACE_CTX_FORCE=1' for chasing every context changes (with CORGEL_TRACE_CTX=1)

src/coregl.c
src/coregl_fastpath_egl.c
src/coregl_fastpath_gl.c
src/coregl_internal.h
src/coregl_wrappath.c

index 2375a18..006934d 100644 (file)
@@ -15,6 +15,7 @@ GLContext_List         *glctx_list = NULL;
 
 int                 trace_api_flag = 0;
 int                 trace_ctx_flag = 0;
+int                 trace_ctx_force_flag = 0;
 int                 trace_state_flag = 0;
 int                 debug_nofp = 0;
 
@@ -407,6 +408,9 @@ init_gl()
 #ifdef COREGL_TRACE_CONTEXT_INFO
        trace_ctx_flag = atoi(get_env_setting("COREGL_TRACE_CTX"));
 #endif
+#ifdef COREGL_TRACE_CONTEXT_INFO
+       trace_ctx_force_flag = atoi(get_env_setting("COREGL_TRACE_CTX_FORCE"));
+#endif
 #ifdef COREGL_TRACE_STATE_INFO
        trace_state_flag = atoi(get_env_setting("COREGL_TRACE_STATE"));
 #endif
index a457cf9..f01580b 100644 (file)
@@ -20,7 +20,7 @@ _dump_context_info(const char *ment, int force_output)
        AST(mutex_lock(&ctx_list_access_mutex) == 1);
        AST(mutex_lock(&general_trace_lists_access_mutex) == 1);
 
-       if (!force_output)
+       if (!force_output && !trace_ctx_force_flag)
        {
                struct timeval tv_now = { 0, 0 };
                AST(gettimeofday(&tv_now, NULL) == 0);
index eda3a4d..57d458a 100644 (file)
 
 #define INIT_FAST_GL_FUNC() \
    tstate = get_current_thread_state(); \
-   AST(tstate != NULL); \
-   AST(tstate->cstate != NULL); \
+   if (tstate == NULL || tstate->cstate == NULL) \
+   { \
+               ERR("\E[0;31;1mWARNING : '%s' called when GLES2 context is not binded (Check MakeCurrent)!\E[0m\n", __func__); \
+               goto finish; \
+   } \
    current_ctx = (GLGlueContext *)tstate->cstate->data; \
    AST(current_ctx != NULL);
 
@@ -58,6 +61,10 @@ _set_gl_error(GLenum error)
        {
                current_ctx->gl_error = error;
        }
+       goto finish;
+
+finish:
+       return;
 }
 
 GLenum
@@ -246,7 +253,7 @@ finish:
 GLboolean
 fpgl_glIsTexture(GLuint texture)
 {
-       GLboolean ret;
+       GLboolean ret = GL_FALSE;
        GLuint real_obj;
 
        DEFINE_FAST_GL_FUNC();
@@ -423,7 +430,7 @@ finish:
 GLboolean
 fpgl_glIsBuffer(GLuint buffer)
 {
-       GLboolean ret;
+       GLboolean ret = GL_FALSE;
        GLuint real_obj;
 
        DEFINE_FAST_GL_FUNC();
@@ -589,7 +596,7 @@ finish:
 GLboolean
 fpgl_glIsFramebuffer(GLuint framebuffer)
 {
-       GLboolean ret;
+       GLboolean ret = GL_FALSE;
        GLuint real_obj;
 
        DEFINE_FAST_GL_FUNC();
@@ -774,7 +781,7 @@ finish:
 GLboolean
 fpgl_glIsRenderbuffer(GLuint renderbuffer)
 {
-       GLboolean ret;
+       GLboolean ret = GL_FALSE;
        GLuint real_obj;
 
        DEFINE_FAST_GL_FUNC();
@@ -1068,7 +1075,7 @@ finish:
 GLboolean
 fpgl_glIsShader(GLuint shader)
 {
-       GLboolean ret;
+       GLboolean ret = GL_FALSE;
        GLuint real_obj;
 
        DEFINE_FAST_GL_FUNC();
@@ -1093,7 +1100,7 @@ finish:
 GLboolean
 fpgl_glIsProgram(GLuint program)
 {
-       GLboolean ret;
+       GLboolean ret = GL_FALSE;
        GLuint real_obj;
 
        DEFINE_FAST_GL_FUNC();
index 6d611de..57e10a2 100644 (file)
@@ -154,6 +154,7 @@ extern Mutex                general_trace_lists_access_mutex;
 
 extern int                 trace_api_flag;
 extern int                 trace_ctx_flag;
+extern int                 trace_ctx_force_flag;
 extern int                 trace_state_flag;
 extern int                 debug_nofp;
 
index e8f5fc7..1351d17 100644 (file)
@@ -51,7 +51,7 @@ dump_wrap_context_states(int force_output)
 {
        static struct timeval tv_last = { 0, 0 };
 
-       if (trace_ctx_flag != 1) return;
+       if (trace_state_flag != 1) return;
 
        _sym_glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, (GLint *)initial_fake_ctx->gl_num_tex_units);
        _sym_glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, (GLint *)initial_fake_ctx->gl_num_vertex_attribs);