diff options
Diffstat (limited to 'src/gpu/GrGpuResourceRef.cpp')
-rw-r--r-- | src/gpu/GrGpuResourceRef.cpp | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/src/gpu/GrGpuResourceRef.cpp b/src/gpu/GrGpuResourceRef.cpp deleted file mode 100644 index 532e0655d8..0000000000 --- a/src/gpu/GrGpuResourceRef.cpp +++ /dev/null @@ -1,127 +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. - */ - -#include "GrGpuResourceRef.h" - -GrGpuResourceRef::GrGpuResourceRef() { - fResource = nullptr; - fOwnRef = false; - fPendingIO = false; -} - -GrGpuResourceRef::GrGpuResourceRef(GrGpuResource* resource, GrIOType ioType) { - fResource = nullptr; - fOwnRef = false; - fPendingIO = false; - this->setResource(resource, ioType); -} - -GrGpuResourceRef::~GrGpuResourceRef() { - if (fOwnRef) { - SkASSERT(fResource); - fResource->unref(); - } - if (fPendingIO) { - switch (fIOType) { - case kRead_GrIOType: - fResource->completedRead(); - break; - case kWrite_GrIOType: - fResource->completedWrite(); - break; - case kRW_GrIOType: - fResource->completedRead(); - fResource->completedWrite(); - break; - } - } -} - -void GrGpuResourceRef::reset() { - SkASSERT(!fPendingIO); - SkASSERT(SkToBool(fResource) == fOwnRef); - if (fOwnRef) { - fResource->unref(); - fOwnRef = false; - fResource = nullptr; - } -} - -void GrGpuResourceRef::setResource(GrGpuResource* resource, GrIOType ioType) { - SkASSERT(!fPendingIO); - SkASSERT(SkToBool(fResource) == fOwnRef); - SkSafeUnref(fResource); - if (nullptr == resource) { - fResource = nullptr; - fOwnRef = false; - } else { - fResource = resource; - fOwnRef = true; - fIOType = ioType; - } -} - -void GrGpuResourceRef::markPendingIO() const { - if (!fResource) { - return; - } - - // This should only be called when the owning GrProgramElement gets its first - // pendingExecution ref. - SkASSERT(!fPendingIO); - fPendingIO = true; - switch (fIOType) { - case kRead_GrIOType: - fResource->addPendingRead(); - break; - case kWrite_GrIOType: - fResource->addPendingWrite(); - break; - case kRW_GrIOType: - fResource->addPendingRead(); - fResource->addPendingWrite(); - break; - } -} - -void GrGpuResourceRef::pendingIOComplete() const { - if (!fResource) { - return; - } - - // This should only be called when the owner's pending executions have ocurred but it is still - // reffed. - SkASSERT(fOwnRef); - SkASSERT(fPendingIO); - switch (fIOType) { - case kRead_GrIOType: - fResource->completedRead(); - break; - case kWrite_GrIOType: - fResource->completedWrite(); - break; - case kRW_GrIOType: - fResource->completedRead(); - fResource->completedWrite(); - break; - - } - fPendingIO = false; -} - -void GrGpuResourceRef::removeRef() const { - if (!fResource) { - return; - } - - // This should only be called once, when the owners last ref goes away and - // there is a pending execution. - SkASSERT(fOwnRef); - SkASSERT(fPendingIO); - fResource->unref(); - fOwnRef = false; -} |