| |
| /* |
| * Copyright 2012 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef GrProgramObj_DEFINED |
| #define GrProgramObj_DEFINED |
| |
| #include "SkTArray.h" |
| #include "GrFakeRefObj.h" |
| class GrShaderObj; |
| |
| //////////////////////////////////////////////////////////////////////////////// |
| class GrProgramObj : public GrFakeRefObj { |
| GR_DEFINE_CREATOR(GrProgramObj) |
| |
| public: |
| GrProgramObj() |
| : GrFakeRefObj() |
| , fInUse(false) {} |
| |
| void AttachShader(GrShaderObj *shader); |
| |
| void deleteAction() override; |
| |
| // TODO: this flag system won't work w/ multiple contexts! |
| void setInUse() { fInUse = true; } |
| void resetInUse() { fInUse = false; } |
| bool getInUse() const { return fInUse; } |
| |
| protected: |
| |
| private: |
| SkTArray<GrShaderObj *> fShaders; |
| bool fInUse; // has this program been activated by a glUseProgram call? |
| |
| typedef GrFakeRefObj INHERITED; |
| }; |
| |
| #endif // GrProgramObj_DEFINED |