| Index: src/gpu/GrGpu.cpp
|
| diff --git a/src/gpu/GrGpu.cpp b/src/gpu/GrGpu.cpp
|
| index bdf67727c3f41f70eb515492e01fbb5e7ac23bbb..0b49e7445ab897b8709406ec988bf1d6d5067043 100644
|
| --- a/src/gpu/GrGpu.cpp
|
| +++ b/src/gpu/GrGpu.cpp
|
| @@ -49,9 +49,62 @@
|
| #endif
|
| }
|
|
|
| -GrGpu::~GrGpu() {}
|
| -
|
| -void GrGpu::contextAbandonded() {}
|
| +GrGpu::~GrGpu() {
|
| + this->releaseResources();
|
| +}
|
| +
|
| +void GrGpu::abandonResources() {
|
| +
|
| + fClipMaskManager.releaseResources();
|
| +
|
| + while (NULL != fObjectList.head()) {
|
| + fObjectList.head()->abandon();
|
| + }
|
| +
|
| + SkASSERT(NULL == fQuadIndexBuffer || fQuadIndexBuffer->wasDestroyed());
|
| + SkSafeSetNull(fQuadIndexBuffer);
|
| + delete fVertexPool;
|
| + fVertexPool = NULL;
|
| + delete fIndexPool;
|
| + fIndexPool = NULL;
|
| +}
|
| +
|
| +void GrGpu::releaseResources() {
|
| +
|
| + fClipMaskManager.releaseResources();
|
| +
|
| + while (NULL != fObjectList.head()) {
|
| + fObjectList.head()->release();
|
| + }
|
| +
|
| + SkASSERT(NULL == fQuadIndexBuffer || fQuadIndexBuffer->wasDestroyed());
|
| + SkSafeSetNull(fQuadIndexBuffer);
|
| + delete fVertexPool;
|
| + fVertexPool = NULL;
|
| + delete fIndexPool;
|
| + fIndexPool = NULL;
|
| +}
|
| +
|
| +void GrGpu::insertObject(GrGpuResource* object) {
|
| + SkASSERT(NULL != object);
|
| + SkASSERT(this == object->getGpu());
|
| +
|
| + fObjectList.addToHead(object);
|
| +}
|
| +
|
| +void GrGpu::removeObject(GrGpuResource* object) {
|
| + SkASSERT(NULL != object);
|
| + SkASSERT(this == object->getGpu());
|
| +
|
| + fObjectList.remove(object);
|
| +}
|
| +
|
| +
|
| +void GrGpu::unimpl(const char msg[]) {
|
| +#ifdef SK_DEBUG
|
| + GrPrintf("--- GrGpu unimplemented(\"%s\")\n", msg);
|
| +#endif
|
| +}
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|
| @@ -266,8 +319,7 @@
|
| }
|
|
|
| const GrIndexBuffer* GrGpu::getQuadIndexBuffer() const {
|
| - if (NULL == fQuadIndexBuffer || fQuadIndexBuffer->wasDestroyed()) {
|
| - SkSafeUnref(fQuadIndexBuffer);
|
| + if (NULL == fQuadIndexBuffer) {
|
| static const int SIZE = sizeof(uint16_t) * 6 * MAX_QUADS;
|
| GrGpu* me = const_cast<GrGpu*>(this);
|
| fQuadIndexBuffer = me->createIndexBuffer(SIZE, false);
|
|
|