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