diff options
author | Bo Hu <bohu@google.com> | 2014-12-17 20:23:36 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-12-17 20:23:37 +0000 |
commit | 28a1a16e736d196b2b076f7a8402d365bee28511 (patch) | |
tree | 5acbb0eb60df1f43d343041b94cac9b00218e6b5 /opengl | |
parent | ba8d44b1ae7f5d39992dc0b59aecf56f8c81ee2a (diff) | |
parent | 8a44ff60e60a40d0da5f326c483c12079612f3cc (diff) | |
download | android_device_generic_goldfish-28a1a16e736d196b2b076f7a8402d365bee28511.tar.gz android_device_generic_goldfish-28a1a16e736d196b2b076f7a8402d365bee28511.tar.bz2 android_device_generic_goldfish-28a1a16e736d196b2b076f7a8402d365bee28511.zip |
Merge "Add parameters validation to glShaderSource() API"
Diffstat (limited to 'opengl')
-rwxr-xr-x[-rw-r--r--] | opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp | 6 | ||||
-rwxr-xr-x[-rw-r--r--] | opengl/shared/OpenglCodecCommon/GLSharedGroup.h | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | opengl/system/GLESv2_enc/GL2Encoder.cpp | 4 |
3 files changed, 10 insertions, 1 deletions
diff --git a/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp b/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp index c7da37a..b079b6d 100644..100755 --- a/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp +++ b/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp @@ -240,6 +240,12 @@ GLSharedGroup::~GLSharedGroup() clearObjectMap(m_shaders); } +bool GLSharedGroup::isObject(GLuint obj) +{ + android::AutoMutex _lock(m_lock); + return ((m_shaders.valueFor(obj)!=NULL) || (m_programs.valueFor(obj)!=NULL)); +} + BufferData * GLSharedGroup::getBufferData(GLuint bufferId) { android::AutoMutex _lock(m_lock); diff --git a/opengl/shared/OpenglCodecCommon/GLSharedGroup.h b/opengl/shared/OpenglCodecCommon/GLSharedGroup.h index 61b8f00..6dfcd8f 100644..100755 --- a/opengl/shared/OpenglCodecCommon/GLSharedGroup.h +++ b/opengl/shared/OpenglCodecCommon/GLSharedGroup.h @@ -110,6 +110,7 @@ private: public: GLSharedGroup(); ~GLSharedGroup(); + bool isObject(GLuint obj); BufferData * getBufferData(GLuint bufferId); void addBufferData(GLuint bufferId, GLsizeiptr size, void * data); void updateBufferData(GLuint bufferId, GLsizeiptr size, void * data); diff --git a/opengl/system/GLESv2_enc/GL2Encoder.cpp b/opengl/system/GLESv2_enc/GL2Encoder.cpp index 80a2cda..90aa61d 100644..100755 --- a/opengl/system/GLESv2_enc/GL2Encoder.cpp +++ b/opengl/system/GLESv2_enc/GL2Encoder.cpp @@ -656,7 +656,9 @@ void GL2Encoder::s_glShaderSource(void *self, GLuint shader, GLsizei count, cons { GL2Encoder* ctx = (GL2Encoder*)self; ShaderData* shaderData = ctx->m_shared->getShaderData(shader); - SET_ERROR_IF(!shaderData, GL_INVALID_VALUE); + SET_ERROR_IF(!ctx->m_shared->isObject(shader), GL_INVALID_VALUE); + SET_ERROR_IF(!shaderData, GL_INVALID_OPERATION); + SET_ERROR_IF((count<0), GL_INVALID_VALUE); int len = glUtilsCalcShaderSourceLen((char**)string, (GLint*)length, count); char *str = new char[len + 1]; |