void CoordinatedGraphicsScene::syncRemoteContent() { // We enqueue messages and execute them during paint, as they require an active GL context. ensureRootLayer(); Vector<std::function<void()>> renderQueue; bool calledOnMainThread = WTF::isMainThread(); if (!calledOnMainThread) m_renderQueueMutex.lock(); renderQueue = WTF::move(m_renderQueue); if (!calledOnMainThread) m_renderQueueMutex.unlock(); for (auto& function : renderQueue) function(); }
void CoordinatedGraphicsScene::syncRemoteContent() { // We enqueue messages and execute them during paint, as they require an active GL context. ensureRootLayer(); Vector<Function<void()> > renderQueue; bool calledOnMainThread = WTF::isMainThread(); if (!calledOnMainThread) m_renderQueueMutex.lock(); renderQueue.swap(m_renderQueue); if (!calledOnMainThread) m_renderQueueMutex.unlock(); for (size_t i = 0; i < renderQueue.size(); ++i) renderQueue[i](); }
void PaintLayerCompositor::setCompositingModeEnabled(bool enable) { if (enable == m_compositing) return; m_compositing = enable; if (m_compositing) ensureRootLayer(); else destroyRootLayer(); // Schedule an update in the parent frame so the <iframe>'s layer in the owner // document matches the compositing state here. if (HTMLFrameOwnerElement* ownerElement = m_layoutView.document().ownerElement()) ownerElement->setNeedsCompositingUpdate(); }
void LayerTreeHostProxy::syncRemoteContent() { // We enqueue messages and execute them during paint, as they require an active GL context. ensureRootLayer(); while (OwnPtr<LayerTreeMessageToRenderer> nextMessage = m_messagesToRenderer.tryGetMessage()) { switch (nextMessage->type()) { case LayerTreeMessageToRenderer::SetRootLayer: { const SetRootLayerMessageData& data = static_cast<SetRootLayerMessage*>(nextMessage.get())->data(); setRootLayerID(data.layerID); break; } case LayerTreeMessageToRenderer::DeleteLayer: { const DeleteLayerMessageData& data = static_cast<DeleteLayerMessage*>(nextMessage.get())->data(); deleteLayer(data.layerID); break; } case LayerTreeMessageToRenderer::SyncLayerParameters: { const SyncLayerParametersMessageData& data = static_cast<SyncLayerParametersMessage*>(nextMessage.get())->data(); syncLayerParameters(data.layerInfo); break; } case LayerTreeMessageToRenderer::CreateTile: { const CreateTileMessageData& data = static_cast<CreateTileMessage*>(nextMessage.get())->data(); createTile(data.layerID, data.remoteTileID, data.scale); break; } case LayerTreeMessageToRenderer::RemoveTile: { const RemoveTileMessageData& data = static_cast<RemoveTileMessage*>(nextMessage.get())->data(); removeTile(data.layerID, data.remoteTileID); break; } case LayerTreeMessageToRenderer::UpdateTile: { const UpdateTileMessageData& data = static_cast<UpdateTileMessage*>(nextMessage.get())->data(); updateTile(data.layerID, data.remoteTileID, data.sourceRect, data.targetRect, data.image); break; } case LayerTreeMessageToRenderer::CreateImage: { const CreateImageMessageData& data = static_cast<CreateImageMessage*>(nextMessage.get())->data(); createImage(data.imageID, data.image); break; } case LayerTreeMessageToRenderer::DestroyImage: { const CreateImageMessageData& data = static_cast<CreateImageMessage*>(nextMessage.get())->data(); destroyImage(data.imageID); break; } case LayerTreeMessageToRenderer::FlushLayerChanges: flushLayerChanges(); break; } } }
void PaintLayerCompositor::updateRootLayerAttachment() { ensureRootLayer(); }