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.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/gpu/command_buffer/service/program_manager.cc b/gpu/command_buffer/service/program_manager.cc
index 2b9ed0b..683449a 100644
--- a/gpu/command_buffer/service/program_manager.cc
+++ b/gpu/command_buffer/service/program_manager.cc
@@ -377,13 +377,17 @@ bool ProgramManager::ProgramInfo::AttachShader(
return true;
}
-void ProgramManager::ProgramInfo::DetachShader(
+bool ProgramManager::ProgramInfo::DetachShader(
ShaderManager* shader_manager,
ShaderManager::ShaderInfo* info) {
DCHECK(shader_manager);
DCHECK(info);
+ if (attached_shaders_[ShaderTypeToIndex(info->shader_type())].get() != info) {
+ return false;
+ }
attached_shaders_[ShaderTypeToIndex(info->shader_type())] = NULL;
shader_manager->UnuseShader(info);
+ return true;
}
void ProgramManager::ProgramInfo::DetachShaders(ShaderManager* shader_manager) {