summaryrefslogtreecommitdiff
path: root/gpu/GrGpuObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/GrGpuObject.cpp')
-rw-r--r--gpu/GrGpuObject.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/gpu/GrGpuObject.cpp b/gpu/GrGpuObject.cpp
new file mode 100644
index 00000000..43a86f2d
--- /dev/null
+++ b/gpu/GrGpuObject.cpp
@@ -0,0 +1,60 @@
+
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#include "GrGpuObject.h"
+#include "GrGpu.h"
+
+GrGpuObject::GrGpuObject(GrGpu* gpu, bool isWrapped) {
+ fGpu = gpu;
+ fDeferredRefCount = 0;
+ if (isWrapped) {
+ fFlags = kWrapped_FlagBit;
+ } else {
+ fFlags = 0;
+ }
+ fGpu->insertObject(this);
+}
+
+GrGpuObject::~GrGpuObject() {
+ // subclass should have released this.
+ SkASSERT(0 == fDeferredRefCount);
+ SkASSERT(this->wasDestroyed());
+}
+
+void GrGpuObject::release() {
+ if (NULL != fGpu) {
+ this->onRelease();
+ fGpu->removeObject(this);
+ fGpu = NULL;
+ }
+}
+
+void GrGpuObject::abandon() {
+ if (NULL != fGpu) {
+ this->onAbandon();
+ fGpu->removeObject(this);
+ fGpu = NULL;
+ }
+}
+
+const GrContext* GrGpuObject::getContext() const {
+ if (NULL != fGpu) {
+ return fGpu->getContext();
+ } else {
+ return NULL;
+ }
+}
+
+GrContext* GrGpuObject::getContext() {
+ if (NULL != fGpu) {
+ return fGpu->getContext();
+ } else {
+ return NULL;
+ }
+}