aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrGpuResource.cpp
diff options
context:
space:
mode:
authorGravatar bsalomon <bsalomon@google.com>2014-07-25 08:35:45 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-07-25 08:35:45 -0700
commit6d3fe022d68fd6dd32c0fab30e24fa5a4f048946 (patch)
tree7af60205eeb7a7644e1bf4a8edfa0b1545619b0a /src/gpu/GrGpuResource.cpp
parent570c392a0056115e103b42c373a61e4e152ea92c (diff)
Rename GrGpuObject to GrGpuResource
R=robertphillips@google.com Author: bsalomon@google.com Review URL: https://codereview.chromium.org/418143004
Diffstat (limited to 'src/gpu/GrGpuResource.cpp')
-rw-r--r--src/gpu/GrGpuResource.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/gpu/GrGpuResource.cpp b/src/gpu/GrGpuResource.cpp
new file mode 100644
index 0000000000..8c2dc45080
--- /dev/null
+++ b/src/gpu/GrGpuResource.cpp
@@ -0,0 +1,71 @@
+
+/*
+ * 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 "GrGpuResource.h"
+#include "GrGpu.h"
+
+GrGpuResource::GrGpuResource(GrGpu* gpu, bool isWrapped)
+ : fRefCnt(1)
+ , fCacheEntry(NULL)
+ , fUniqueID(CreateUniqueID()) {
+ fGpu = gpu;
+ if (isWrapped) {
+ fFlags = kWrapped_FlagBit;
+ } else {
+ fFlags = 0;
+ }
+ fGpu->insertObject(this);
+}
+
+GrGpuResource::~GrGpuResource() {
+ SkASSERT(0 == fRefCnt);
+ // subclass should have released this.
+ SkASSERT(this->wasDestroyed());
+}
+
+void GrGpuResource::release() {
+ if (NULL != fGpu) {
+ this->onRelease();
+ fGpu->removeObject(this);
+ fGpu = NULL;
+ }
+}
+
+void GrGpuResource::abandon() {
+ if (NULL != fGpu) {
+ this->onAbandon();
+ fGpu->removeObject(this);
+ fGpu = NULL;
+ }
+}
+
+const GrContext* GrGpuResource::getContext() const {
+ if (NULL != fGpu) {
+ return fGpu->getContext();
+ } else {
+ return NULL;
+ }
+}
+
+GrContext* GrGpuResource::getContext() {
+ if (NULL != fGpu) {
+ return fGpu->getContext();
+ } else {
+ return NULL;
+ }
+}
+
+uint32_t GrGpuResource::CreateUniqueID() {
+ static int32_t gUniqueID = SK_InvalidUniqueID;
+ uint32_t id;
+ do {
+ id = static_cast<uint32_t>(sk_atomic_inc(&gUniqueID) + 1);
+ } while (id == SK_InvalidUniqueID);
+ return id;
+}