Index: include/gpu/GrProgramElementRef.h |
diff --git a/include/gpu/GrProgramElementRef.h b/include/gpu/GrProgramElementRef.h |
deleted file mode 100644 |
index ecc802317b8170cb2ef4e140e24cc075c6eae2d1..0000000000000000000000000000000000000000 |
--- a/include/gpu/GrProgramElementRef.h |
+++ /dev/null |
@@ -1,93 +0,0 @@ |
-/* |
- * Copyright 2014 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#ifndef GrProgramElementRef_DEFINED |
-#define GrProgramElementRef_DEFINED |
- |
-#include "SkRefCnt.h" |
-#include "GrTypes.h" |
- |
-/** |
- * Helper for owning a GrProgramElement subclass and being able to convert a ref to pending |
- * execution. It is like an SkAutoTUnref for program elements whose execution can be deferred. Once |
- * in the pending execution state it is illegal to change the object that is owned by the |
- * GrProgramElementRef. Its destructor will either unref the GrProgramElement or signal that |
- * the pending execution has completed, depending on whether convertToPendingExec() was called. |
- */ |
-template <typename T> class GrProgramElementRef : SkNoncopyable { |
-public: |
- GrProgramElementRef() : fOwnPendingExec(false), fObj(NULL) {}; |
- |
- // Adopts a ref from the caller. |
- explicit GrProgramElementRef(T* obj) : fOwnPendingExec(false), fObj(obj) {} |
- |
- // Adopts a ref from the caller. Do not call after convertToPendingExec. |
- void reset(T* obj) { |
- SkASSERT(!fOwnPendingExec); |
- SkSafeUnref(fObj); |
- fObj = obj; |
- } |
- |
- void convertToPendingExec() { |
- SkASSERT(!fOwnPendingExec); |
- fObj->convertRefToPendingExecution(); |
- fOwnPendingExec = true; |
- } |
- |
- // In the short term we need to support copying a GrProcessorStage and making the copy own |
- // the same type of ref as the source. This function exists to support this. TODO: Once |
- // GrDrawState and GrOptDrawState no longer share a base class they won't have to share |
- // GrProcessorStage and we can have GrOptDrawState always own pending executions rather than |
- // refs on GrProgramElements. At that point we should be able to delete this function. |
- // This function makes assumptions that are valid in the GrProcessorStage use case and should |
- // not be used elsewhere. |
- void initAndRef(const GrProgramElementRef& that) { |
- SkASSERT(!fObj); |
- SkASSERT(that.fObj); |
- if (that.fOwnPendingExec) { |
- SkASSERT(that.fObj->fPendingExecutions > 0); |
- that.fObj->fPendingExecutions++; |
- } else { |
- that.fObj->ref(); |
- } |
- this->fOwnPendingExec = that.fOwnPendingExec; |
- this->fObj = that.fObj; |
- } |
- |
- T* get() const { return fObj; } |
- operator T*() { return fObj; } |
- |
- /** If T is const, the type returned from operator-> will also be const. */ |
- typedef typename SkTConstType<typename SkAutoTUnref<T>::template BlockRef<T>, |
- SkTIsConst<T>::value>::type BlockRefType; |
- |
- /** |
- * GrProgramElementRef assumes ownership of the ref and manages converting the ref to a |
- * pending execution. As a result, it is an error for the user to ref or unref through |
- * GrProgramElementRef. Therefore operator-> returns BlockRef<T>*. |
- */ |
- BlockRefType *operator->() const { |
- return static_cast<BlockRefType*>(fObj); |
- } |
- |
- ~GrProgramElementRef() { |
- if (fObj) { |
- if (fOwnPendingExec) { |
- fObj->completedExecution(); |
- } else { |
- fObj->unref(); |
- } |
- } |
- } |
- |
-private: |
- bool fOwnPendingExec; |
- T* fObj; |
- |
- typedef SkNoncopyable INHERITED; |
-}; |
-#endif |