/* * 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