18fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 78fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com */ 88fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com 9ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 10089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org#include "GrGpuObject.h" 118fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com#include "GrGpu.h" 128fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com 13089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.orgGrGpuObject::GrGpuObject(GrGpu* gpu, bool isWrapped) { 14838f6e18fb13cd295f2c4d1e673cb03458f4e0a8bsalomon@google.com fGpu = gpu; 15838f6e18fb13cd295f2c4d1e673cb03458f4e0a8bsalomon@google.com fDeferredRefCount = 0; 16728302281920727b96e6cec0bfc7575900f34a8bbsalomon@google.com if (isWrapped) { 179ef0426e7c126f6ad6ba833d4543b92a197c95afrobertphillips@google.com fFlags = kWrapped_FlagBit; 18728302281920727b96e6cec0bfc7575900f34a8bbsalomon@google.com } else { 19728302281920727b96e6cec0bfc7575900f34a8bbsalomon@google.com fFlags = 0; 20728302281920727b96e6cec0bfc7575900f34a8bbsalomon@google.com } 21089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org fGpu->insertObject(this); 228fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com} 238fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com 24089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.orgGrGpuObject::~GrGpuObject() { 2576b7fcc79ee47db6ebea4f27e0070c467684418absalomon@google.com // subclass should have released this. 26f6de475e5cbd143f348ff7738919e397b7fe7f57tfarina@chromium.org SkASSERT(0 == fDeferredRefCount); 27089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org SkASSERT(this->wasDestroyed()); 2876b7fcc79ee47db6ebea4f27e0070c467684418absalomon@google.com} 2976b7fcc79ee47db6ebea4f27e0070c467684418absalomon@google.com 30089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.orgvoid GrGpuObject::release() { 318fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com if (NULL != fGpu) { 328fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com this->onRelease(); 33089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org fGpu->removeObject(this); 348fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com fGpu = NULL; 358fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com } 368fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com} 378fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com 38089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.orgvoid GrGpuObject::abandon() { 398fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com if (NULL != fGpu) { 408fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com this->onAbandon(); 41089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org fGpu->removeObject(this); 428fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com fGpu = NULL; 438fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com } 448fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com} 45f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com 46089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.orgconst GrContext* GrGpuObject::getContext() const { 47f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com if (NULL != fGpu) { 48f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com return fGpu->getContext(); 49f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com } else { 50f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com return NULL; 51f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com } 52f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com} 53f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com 54089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.orgGrContext* GrGpuObject::getContext() { 55f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com if (NULL != fGpu) { 56f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com return fGpu->getContext(); 57f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com } else { 58f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com return NULL; 59f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com } 60f7b5c1ebfdad1a77d301d1676235e79f8006883ebsalomon@google.com} 61