void CCVideoLayerImpl::willDraw(LayerRendererChromium* layerRenderer) { ASSERT(CCProxy::isImplThread()); MutexLocker locker(m_providerMutex); if (!m_provider) { m_frame = 0; return; } m_frame = m_provider->getCurrentFrame(); if (!m_frame) return; m_format = convertVFCFormatToGC3DFormat(m_frame); if (m_format == GraphicsContext3D::INVALID_VALUE) { m_provider->putCurrentFrame(m_frame); m_frame = 0; return; } if (!reserveTextures(m_frame, m_format, layerRenderer)) { m_provider->putCurrentFrame(m_frame); m_frame = 0; } }
void CCVideoLayerImpl::willDrawInternal(CCRenderer* layerRenderer, CCGraphicsContext* context) { ASSERT(CCProxy::isImplThread()); if (!m_provider) { m_frame = 0; return; } m_frame = m_provider->getCurrentFrame(); if (!m_frame) return; m_format = convertVFCFormatToGC3DFormat(*m_frame); if (m_format == GraphicsContext3D::INVALID_VALUE) { m_provider->putCurrentFrame(m_frame); m_frame = 0; return; } if (m_frame->planes() > WebKit::WebVideoFrame::maxPlanes) { m_provider->putCurrentFrame(m_frame); m_frame = 0; return; } if (!allocatePlaneData(layerRenderer)) { m_provider->putCurrentFrame(m_frame); m_frame = 0; return; } if (!copyPlaneData(layerRenderer, context)) { m_provider->putCurrentFrame(m_frame); m_frame = 0; return; } }