void GrInOrderDrawBuffer::pushState() { for (int s = 0; s < kNumStages; ++s) { GrSafeRef(fCurrDrawState.fTextures[s]); } GrSafeRef(fCurrDrawState.fRenderTarget); this->saveCurrentDrawState(&fStates.push_back()); }
void GrInOrderDrawBuffer::pushState() { const GrDrawState& drawState = this->getDrawState(); for (int s = 0; s < GrDrawState::kNumStages; ++s) { GrSafeRef(drawState.getTexture(s)); } GrSafeRef(drawState.getRenderTarget()); fStates.push_back(this->getDrawState()); // Any textures that are added to the stored state need to be // reffed so the unref in reset doesn't inappropriately free them fStates.back().enableBehavior(GrDrawState::kTexturesNeedRef_BehaviorBit); }
void GrInOrderDrawBuffer::setQuadIndexBuffer(const GrIndexBuffer* indexBuffer) { bool newIdxBuffer = fQuadIndexBuffer != indexBuffer; if (newIdxBuffer) { GrSafeUnref(fQuadIndexBuffer); fQuadIndexBuffer = indexBuffer; GrSafeRef(fQuadIndexBuffer); fCurrQuad = 0; fMaxQuads = (NULL == indexBuffer) ? 0 : indexBuffer->maxQuads(); } else { GrAssert((NULL == indexBuffer && 0 == fMaxQuads) || (indexBuffer->maxQuads() == fMaxQuads)); } }
SkGrPixelRef::SkGrPixelRef(GrSurface* surface, bool transferCacheLock) { // TODO: figure out if this is responsible for Chrome canvas errors #if 0 // The GrTexture has a ref to the GrRenderTarget but not vice versa. // If the GrTexture exists take a ref to that (rather than the render // target) fSurface = surface->asTexture(); #else fSurface = NULL; #endif if (NULL == fSurface) { fSurface = surface; } fUnlock = transferCacheLock; GrSafeRef(surface); }
GrGLRenderTarget::GrGLRenderTarget(GrGpuGL* gpu, const GLRenderTargetIDs& ids, GrGLTexID* texID, GrGLuint stencilBits, bool isMultisampled, const GrGLIRect& viewport, GrGLTexture* texture) : INHERITED(gpu, texture, viewport.fWidth, viewport.fHeight, stencilBits, isMultisampled) { fRTFBOID = ids.fRTFBOID; fTexFBOID = ids.fTexFBOID; fStencilRenderbufferID = ids.fStencilRenderbufferID; fMSColorRenderbufferID = ids.fMSColorRenderbufferID; fViewport = viewport; fOwnIDs = ids.fOwnIDs; fTexIDObj = texID; GrSafeRef(fTexIDObj); }
SkGrRenderTargetPixelRef::SkGrRenderTargetPixelRef(GrRenderTarget* rt) { fRenderTarget = rt; GrSafeRef(fRenderTarget); }
SkGrTexturePixelRef::SkGrTexturePixelRef(GrTexture* tex) { fTexture = tex; GrSafeRef(tex); }