/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #include "GrSurfaceProxy.h" #include "GrGpuResourcePriv.h" #include "GrOpList.h" GrSurfaceProxy::GrSurfaceProxy(sk_sp surface, SkBackingFit fit) : INHERITED(std::move(surface)) , fDesc(fTarget->desc()) , fFit(fit) , fBudgeted(fTarget->resourcePriv().isBudgeted()) , fUniqueID(fTarget->uniqueID()) , fGpuMemorySize(kInvalidGpuMemorySize) , fLastOpList(nullptr) { } GrSurfaceProxy::~GrSurfaceProxy() { if (fLastOpList) { fLastOpList->clearTarget(); } SkSafeUnref(fLastOpList); } void GrSurfaceProxy::setLastOpList(GrOpList* opList) { if (fLastOpList) { // The non-MDB world never closes so we can't check this condition #ifdef ENABLE_MDB SkASSERT(fLastOpList->isClosed()); #endif fLastOpList->clearTarget(); } SkRefCnt_SafeAssign(fLastOpList, opList); }