summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service/program_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/service/program_manager.cc')
-rw-r--r--gpu/command_buffer/service/program_manager.cc10
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(