diff options
Diffstat (limited to 'gpu/command_buffer/service/program_manager.cc')
-rw-r--r-- | gpu/command_buffer/service/program_manager.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gpu/command_buffer/service/program_manager.cc b/gpu/command_buffer/service/program_manager.cc index 7210bdb..3460019 100644 --- a/gpu/command_buffer/service/program_manager.cc +++ b/gpu/command_buffer/service/program_manager.cc @@ -296,10 +296,14 @@ void ProgramManager::ProgramInfo::GetProgramiv(GLenum pname, GLint* params) { } } -void ProgramManager::ProgramInfo::AttachShader( +bool ProgramManager::ProgramInfo::AttachShader( ShaderManager::ShaderInfo* info) { - attached_shaders_[ShaderTypeToIndex(info->shader_type())] = - ShaderManager::ShaderInfo::Ref(info); + int index = ShaderTypeToIndex(info->shader_type()); + if (attached_shaders_[index] != NULL) { + return false; + } + attached_shaders_[index] = ShaderManager::ShaderInfo::Ref(info); + return true; } void ProgramManager::ProgramInfo::DetachShader( |