void HTMLCanvasElement::ensureUnacceleratedImageBuffer() { if ((hasImageBuffer() && !m_imageBuffer->isAccelerated()) || m_didFailToCreateImageBuffer) return; discardImageBuffer(); OpacityMode opacityMode = !m_context || m_context->hasAlpha() ? NonOpaque : Opaque; m_imageBuffer = ImageBuffer::create(size(), opacityMode); m_didFailToCreateImageBuffer = !m_imageBuffer; }
void HTMLCanvasElement::setSurfaceSize(const IntSize& size) { m_size = size; m_didFailToCreateImageBuffer = false; discardImageBuffer(); clearCopiedImage(); if (m_context && m_context->is2d()) { CanvasRenderingContext2D* context2d = toCanvasRenderingContext2D(m_context.get()); if (context2d->isContextLost()) { context2d->restoreContext(); } } }
void HTMLCanvasElement::didChangeVisibilityState(PageVisibilityState visibility) { if (!m_context) return; bool hidden = visibility != PageVisibilityStateVisible; m_context->setIsHidden(hidden); if (hidden) { clearCopiedImage(); if (is3D()) { discardImageBuffer(); } } }