void DrawingBuffer::clear() { if (!m_context) return; m_context->makeContextCurrent(); #if USE(ACCELERATED_COMPOSITING) clearPlatformLayer(); #endif if (!m_size.isEmpty()) { s_currentResourceUsePixels -= m_size.width() * m_size.height(); m_size = IntSize(); } if (m_colorBuffer) { m_context->deleteTexture(m_colorBuffer); m_colorBuffer = 0; } if (m_frontColorBuffer) { m_context->deleteTexture(m_frontColorBuffer); m_frontColorBuffer = 0; } if (m_multisampleColorBuffer) { m_context->deleteRenderbuffer(m_multisampleColorBuffer); m_multisampleColorBuffer = 0; } if (m_depthStencilBuffer) { m_context->deleteRenderbuffer(m_depthStencilBuffer); m_depthStencilBuffer = 0; } if (m_depthBuffer) { m_context->deleteRenderbuffer(m_depthBuffer); m_depthBuffer = 0; } if (m_stencilBuffer) { m_context->deleteRenderbuffer(m_stencilBuffer); m_stencilBuffer = 0; } if (m_multisampleFBO) { m_context->deleteFramebuffer(m_multisampleFBO); m_multisampleFBO = 0; } if (m_fbo) { m_context->deleteFramebuffer(m_fbo); m_fbo = 0; } }
void DrawingBuffer::releaseResources() { if (m_context) { m_context->makeContextCurrent(); clearPlatformLayer(); for (size_t i = 0; i < m_textureMailboxes.size(); i++) m_context->deleteTexture(m_textureMailboxes[i]->textureId); if (m_multisampleColorBuffer) m_context->deleteRenderbuffer(m_multisampleColorBuffer); if (m_depthStencilBuffer) m_context->deleteRenderbuffer(m_depthStencilBuffer); if (m_depthBuffer) m_context->deleteRenderbuffer(m_depthBuffer); if (m_stencilBuffer) m_context->deleteRenderbuffer(m_stencilBuffer); if (m_multisampleFBO) m_context->deleteFramebuffer(m_multisampleFBO); if (m_fbo) m_context->deleteFramebuffer(m_fbo); m_context.clear(); } setSize(IntSize()); m_colorBuffer = 0; m_frontColorBuffer = 0; m_multisampleColorBuffer = 0; m_depthStencilBuffer = 0; m_depthBuffer = 0; m_stencilBuffer = 0; m_multisampleFBO = 0; m_fbo = 0; m_contextEvictionManager.clear(); m_lastColorBuffer.clear(); m_recycledMailboxes.clear(); m_textureMailboxes.clear(); if (m_layer) { GraphicsLayer::unregisterContentsLayer(m_layer->layer()); m_layer.clear(); } }
void DrawingBuffer::beginDestruction() { ASSERT(!m_destructionInProgress); m_destructionInProgress = true; clearPlatformLayer(); while (!m_recycledMailboxQueue.isEmpty()) deleteMailbox(m_recycledMailboxQueue.takeLast()); if (m_multisampleFBO) m_gl->DeleteFramebuffers(1, &m_multisampleFBO); if (m_fbo) m_gl->DeleteFramebuffers(1, &m_fbo); if (m_multisampleRenderbuffer) m_gl->DeleteRenderbuffers(1, &m_multisampleRenderbuffer); if (m_depthStencilBuffer) m_gl->DeleteRenderbuffers(1, &m_depthStencilBuffer); if (m_colorBuffer.textureId) { deleteChromiumImageForTexture(&m_colorBuffer); m_gl->DeleteTextures(1, &m_colorBuffer.textureId); } setSize(IntSize()); m_colorBuffer = TextureInfo(); m_frontColorBuffer = FrontBufferInfo(); m_multisampleRenderbuffer = 0; m_depthStencilBuffer = 0; m_multisampleFBO = 0; m_fbo = 0; if (m_layer) GraphicsLayer::unregisterContentsLayer(m_layer->layer()); }