YaGL: Add program link status check 32/45332/1
authorVasiliy Ulyanov <v.ulyanov@samsung.com>
Tue, 9 Jun 2015 16:06:21 +0000 (19:06 +0300)
committerjinhyung.jo <jinhyung.jo@samsung.com>
Tue, 4 Aug 2015 08:28:16 +0000 (17:28 +0900)
According to the OGLES2.0 spec:

    void UseProgram(uint program);

If program has not been successfully linked, the error
INVALID_OPERATION is generated and the current rendering
state is not modified.

Change-Id: I481a494c210e76ee4db319ae569d3491ade1d35a
Signed-off-by: Vasiliy Ulyanov <v.ulyanov@samsung.com>
GLESv2/yagl_gles2_calls.c
GLESv2/yagl_gles2_program.c

index 67ce9f08ce136f4ab3e5d57ea1cb53ad5a2c231f..6d4bb24613a9d2878539f926bf85af9891025606 100644 (file)
@@ -2064,6 +2064,11 @@ YAGL_API void glUseProgram(GLuint program)
             YAGL_SET_ERR(GL_INVALID_OPERATION);
             goto out;
         }
+
+        if (!program_obj->linked) {
+            YAGL_SET_ERR(GL_INVALID_OPERATION);
+            goto out;
+        }
     }
 
     if (!ctx->pre_use_program(ctx, program_obj)) {
index 3609955cfdf1d7bcab7018090421564966b4bc9e..e5dd3354eb7ed9921bf79b242769bb3bbb3cd034 100644 (file)
@@ -327,7 +327,7 @@ void yagl_gles2_program_link(struct yagl_gles2_program *program)
                             sizeof(params)/sizeof(params[0]),
                             NULL);
 
-    program->linked = 1;
+    program->linked = params[0];
 
     program->link_status = params[0];
     program->info_log_length = params[1];