15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright 2012 Google Inc.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "GrProgramObj.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "GrShaderObj.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void GrProgramObj::AttachShader(GrShaderObj *shader) {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shader->ref();
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fShaders.push_back(shader);
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GrProgramObj::deleteAction() {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // shaders are automatically detached from a deleted program. They will only be
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // deleted if they were marked for deletion by a prior call to glDeleteShader
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for (int i = 0; i < fShaders.count(); ++i) {
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        fShaders[i]->unref();
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fShaders.reset();
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    this->INHERITED::deleteAction();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)