11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "GrResource.h" 111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "GrGpu.h" 121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 131cab2921ab279367f8206cdadc9259d12e603548Derek SollenbergerGrResource::GrResource(GrGpu* gpu) { 141cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger fGpu = gpu; 151cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger fNext = NULL; 161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger fPrevious = NULL; 171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger fGpu->insertResource(this); 181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger} 191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergervoid GrResource::release() { 211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger if (NULL != fGpu) { 221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger this->onRelease(); 231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger fGpu->removeResource(this); 241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger fGpu = NULL; 251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger } 261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger} 271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergervoid GrResource::abandon() { 291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger if (NULL != fGpu) { 301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger this->onAbandon(); 311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger fGpu->removeResource(this); 321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger fGpu = NULL; 331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger } 341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger} 351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerconst GrContext* GrResource::getContext() const { 371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger if (NULL != fGpu) { 381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger return fGpu->getContext(); 391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger } else { 401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger return NULL; 411cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger } 421cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger} 431cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 441cab2921ab279367f8206cdadc9259d12e603548Derek SollenbergerGrContext* GrResource::getContext() { 451cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger if (NULL != fGpu) { 461cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger return fGpu->getContext(); 471cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger } else { 481cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger return NULL; 491cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger } 501cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger} 511cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 52