From 61e5e2861e2c90b3e3e5a5d70808afe8632054e4 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 18 Oct 2016 19:29:11 -0700 Subject: [PATCH] Rate limit QML web surfaces --- interface/src/ui/overlays/Web3DOverlay.cpp | 3 +++ libraries/entities-renderer/src/RenderableWebEntityItem.cpp | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/interface/src/ui/overlays/Web3DOverlay.cpp b/interface/src/ui/overlays/Web3DOverlay.cpp index be564a768e..86f062aba9 100644 --- a/interface/src/ui/overlays/Web3DOverlay.cpp +++ b/interface/src/ui/overlays/Web3DOverlay.cpp @@ -79,6 +79,9 @@ void Web3DOverlay::render(RenderArgs* args) { }); }; _webSurface = QSharedPointer(new OffscreenQmlSurface(), deleter); + // FIXME, the max FPS could be better managed by being dynamic (based on the number of current surfaces + // and the current rendering load) + _webSurface->setMaxFps(10); _webSurface->create(currentContext); _webSurface->setBaseUrl(QUrl::fromLocalFile(PathUtils::resourcesPath() + "/qml/controls/")); _webSurface->load("WebView.qml"); diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp index bea3e6a0de..3f8b9e4c04 100644 --- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp @@ -95,11 +95,14 @@ bool RenderableWebEntityItem::buildWebSurface(EntityTreeRenderer* renderer) { }; _webSurface = QSharedPointer(new OffscreenQmlSurface(), deleter); + // FIXME, the max FPS could be better managed by being dynamic (based on the number of current surfaces + // and the current rendering load) + _webSurface->setMaxFps(10); + // The lifetime of the QML surface MUST be managed by the main thread // Additionally, we MUST use local variables copied by value, rather than // member variables, since they would implicitly refer to a this that // is no longer valid - _webSurface->create(currentContext); _webSurface->setBaseUrl(QUrl::fromLocalFile(PathUtils::resourcesPath() + "/qml/controls/")); _webSurface->load("WebView.qml", [&](QQmlContext* context, QObject* obj) {