diff options
author | Yahan Zhou <yahan@google.com> | 2016-11-22 14:03:56 -0800 |
---|---|---|
committer | Yahan Zhou <yahan@google.com> | 2016-11-22 14:59:07 -0800 |
commit | b99406c86fcf4bf9e0eec5fc08d2f59515cf9e3f (patch) | |
tree | c400efe1466974af9b8c28355920277dc800e4ca /shared/OpenglCodecCommon | |
parent | 442169e391640f8696c0678e72fee88d58090c0c (diff) | |
download | goldfish-opengl-b99406c86fcf4bf9e0eec5fc08d2f59515cf9e3f.tar.gz |
Fix glLinkProgram with invalid program name
glLinkProgram might try setting up program attributes even when an
invalid program name is passed to it. This patch fixes it.
BUG: 33069416
Change-Id: I93ed140095b67df47b158ba837c4aac8eb9e8e50
Diffstat (limited to 'shared/OpenglCodecCommon')
-rwxr-xr-x | shared/OpenglCodecCommon/GLSharedGroup.cpp | 7 | ||||
-rwxr-xr-x | shared/OpenglCodecCommon/GLSharedGroup.h | 1 |
2 files changed, 8 insertions, 0 deletions
diff --git a/shared/OpenglCodecCommon/GLSharedGroup.cpp b/shared/OpenglCodecCommon/GLSharedGroup.cpp index 1f7c6290..3b5211f6 100755 --- a/shared/OpenglCodecCommon/GLSharedGroup.cpp +++ b/shared/OpenglCodecCommon/GLSharedGroup.cpp @@ -452,6 +452,13 @@ bool GLSharedGroup::setSamplerUniform(GLuint program, GLint appLoc, GLint val, G return pData ? pData->setSamplerUniform(appLoc, val, target) : false; } +bool GLSharedGroup::isShader(GLuint shader) +{ + android::AutoMutex _lock(m_lock); + ShaderData* pData = m_shaders.valueFor(shader); + return (pData!=NULL); +} + bool GLSharedGroup::addShaderData(GLuint shader) { android::AutoMutex _lock(m_lock); diff --git a/shared/OpenglCodecCommon/GLSharedGroup.h b/shared/OpenglCodecCommon/GLSharedGroup.h index b03b40bd..4057b52b 100755 --- a/shared/OpenglCodecCommon/GLSharedGroup.h +++ b/shared/OpenglCodecCommon/GLSharedGroup.h @@ -135,6 +135,7 @@ public: GLint getNextSamplerUniform(GLuint program, GLint index, GLint* val, GLenum* target) const; bool setSamplerUniform(GLuint program, GLint appLoc, GLint val, GLenum* target); + bool isShader(GLuint shader); bool addShaderData(GLuint shader); // caller must hold a reference to the shader as long as it holds the pointer ShaderData* getShaderData(GLuint shader); |