make maxFPS a property

This commit is contained in:
Seth Alves 2017-03-08 15:30:15 -08:00
parent ae48dae96f
commit 28ade45f97
2 changed files with 28 additions and 2 deletions

View file

@ -179,12 +179,20 @@ void Web3DOverlay::loadSourceURL() {
tabletScriptingInterface->setQmlTabletRoot("com.highfidelity.interface.tablet.system", _webSurface->getRootItem(), _webSurface.data()); tabletScriptingInterface->setQmlTabletRoot("com.highfidelity.interface.tablet.system", _webSurface->getRootItem(), _webSurface.data());
// Override min fps for tablet UI, for silky smooth scrolling // Override min fps for tablet UI, for silky smooth scrolling
_webSurface->setMaxFps(90); setMaxFPS(90);
} }
} }
_webSurface->getRootContext()->setContextProperty("globalPosition", vec3toVariant(getPosition())); _webSurface->getRootContext()->setContextProperty("globalPosition", vec3toVariant(getPosition()));
} }
void Web3DOverlay::setMaxFPS(uint8_t maxFPS) {
_desiredMaxFPS = maxFPS;
if (_webSurface) {
_webSurface->setMaxFps(_desiredMaxFPS);
_currentMaxFPS = _desiredMaxFPS;
}
}
void Web3DOverlay::render(RenderArgs* args) { void Web3DOverlay::render(RenderArgs* args) {
if (!_visible || !getParentVisible()) { if (!_visible || !getParentVisible()) {
return; return;
@ -194,9 +202,11 @@ void Web3DOverlay::render(RenderArgs* args) {
QSurface * currentSurface = currentContext->surface(); QSurface * currentSurface = currentContext->surface();
if (!_webSurface) { if (!_webSurface) {
_webSurface = DependencyManager::get<OffscreenQmlSurfaceCache>()->acquire(pickURL()); _webSurface = DependencyManager::get<OffscreenQmlSurfaceCache>()->acquire(pickURL());
_webSurface->setMaxFps(10);
// FIXME, the max FPS could be better managed by being dynamic (based on the number of current surfaces // FIXME, the max FPS could be better managed by being dynamic (based on the number of current surfaces
// and the current rendering load) // and the current rendering load)
if (_currentMaxFPS != _desiredMaxFPS) {
setMaxFPS(_desiredMaxFPS);
}
loadSourceURL(); loadSourceURL();
_webSurface->resume(); _webSurface->resume();
_webSurface->resize(QSize(_resolution.x, _resolution.y)); _webSurface->resize(QSize(_resolution.x, _resolution.y));
@ -246,6 +256,10 @@ void Web3DOverlay::render(RenderArgs* args) {
_emitScriptEventConnection = connect(this, &Web3DOverlay::scriptEventReceived, _webSurface.data(), &OffscreenQmlSurface::emitScriptEvent); _emitScriptEventConnection = connect(this, &Web3DOverlay::scriptEventReceived, _webSurface.data(), &OffscreenQmlSurface::emitScriptEvent);
_webEventReceivedConnection = connect(_webSurface.data(), &OffscreenQmlSurface::webEventReceived, this, &Web3DOverlay::webEventReceived); _webEventReceivedConnection = connect(_webSurface.data(), &OffscreenQmlSurface::webEventReceived, this, &Web3DOverlay::webEventReceived);
} else {
if (_currentMaxFPS != _desiredMaxFPS) {
setMaxFPS(_desiredMaxFPS);
}
} }
vec2 halfSize = getSize() / 2.0f; vec2 halfSize = getSize() / 2.0f;
@ -401,6 +415,11 @@ void Web3DOverlay::setProperties(const QVariantMap& properties) {
_dpi = dpi.toFloat(); _dpi = dpi.toFloat();
} }
auto maxFPS = properties["maxFPS"];
if (maxFPS.isValid()) {
_desiredMaxFPS = maxFPS.toInt();
}
auto showKeyboardFocusHighlight = properties["showKeyboardFocusHighlight"]; auto showKeyboardFocusHighlight = properties["showKeyboardFocusHighlight"];
if (showKeyboardFocusHighlight.isValid()) { if (showKeyboardFocusHighlight.isValid()) {
_showKeyboardFocusHighlight = showKeyboardFocusHighlight.toBool(); _showKeyboardFocusHighlight = showKeyboardFocusHighlight.toBool();
@ -420,6 +439,9 @@ QVariant Web3DOverlay::getProperty(const QString& property) {
if (property == "dpi") { if (property == "dpi") {
return _dpi; return _dpi;
} }
if (property == "maxFPS") {
return _desiredMaxFPS;
}
if (property == "showKeyboardFocusHighlight") { if (property == "showKeyboardFocusHighlight") {
return _showKeyboardFocusHighlight; return _showKeyboardFocusHighlight;
} }

View file

@ -31,6 +31,7 @@ public:
QString pickURL(); QString pickURL();
void loadSourceURL(); void loadSourceURL();
void setMaxFPS(uint8_t maxFPS);
virtual void render(RenderArgs* args) override; virtual void render(RenderArgs* args) override;
virtual const render::ShapeKey getShapeKey() override; virtual const render::ShapeKey getShapeKey() override;
@ -75,6 +76,9 @@ private:
bool _pressed{ false }; bool _pressed{ false };
QTouchDevice _touchDevice; QTouchDevice _touchDevice;
uint8_t _desiredMaxFPS { 10 };
uint8_t _currentMaxFPS { 0 };
QMetaObject::Connection _mousePressConnection; QMetaObject::Connection _mousePressConnection;
QMetaObject::Connection _mouseReleaseConnection; QMetaObject::Connection _mouseReleaseConnection;
QMetaObject::Connection _mouseMoveConnection; QMetaObject::Connection _mouseMoveConnection;