diff --git a/deflect/qt/OffscreenQuickView.cpp b/deflect/qt/OffscreenQuickView.cpp index 97c28e6..d243a21 100644 --- a/deflect/qt/OffscreenQuickView.cpp +++ b/deflect/qt/OffscreenQuickView.cpp @@ -182,9 +182,13 @@ void OffscreenQuickView::_requestRender() { killTimer(_stopRenderingDelayTimer); _stopRenderingDelayTimer = 0; - if (_renderTimer == 0) - _renderTimer = startTimer(5, Qt::PreciseTimer); + _renderTimer = startTimer(int(_renderInterval), Qt::PreciseTimer); +} + +void OffscreenQuickView::setRenderInterval(uint interval) +{ + _renderInterval = interval; } void OffscreenQuickView::_initRenderer() @@ -244,5 +248,5 @@ void OffscreenQuickView::_afterRender() // The fbo can be safely assumed to be valid when this function executes. emit afterRender(_quickRenderer->fbo()->toImage()); } -} -} +} // namespace qt +} // namespace deflect diff --git a/deflect/qt/OffscreenQuickView.h b/deflect/qt/OffscreenQuickView.h index 7556d33..c4dcdfb 100644 --- a/deflect/qt/OffscreenQuickView.h +++ b/deflect/qt/OffscreenQuickView.h @@ -99,6 +99,12 @@ class OffscreenQuickView : public QQuickWindow /** @return the root qml context. */ QQmlContext* getRootContext() const; + /** + * Set a value used to calculate intenal render timer. + * @param interval interval to set. + */ + void setRenderInterval(uint interval); + signals: /** * Notify that the scene has just finished rendering. @@ -123,6 +129,7 @@ class OffscreenQuickView : public QQuickWindow std::promise _loadPromise; int _renderTimer = 0; + uint _renderInterval = 16; int _stopRenderingDelayTimer = 0; void timerEvent(QTimerEvent* e) final; @@ -133,7 +140,7 @@ class OffscreenQuickView : public QQuickWindow void _render(); void _afterRender(); }; -} -} +} // namespace qt +} // namespace deflect #endif diff --git a/deflect/qt/QmlStreamer.cpp b/deflect/qt/QmlStreamer.cpp index 7f03ca6..006aa66 100644 --- a/deflect/qt/QmlStreamer.cpp +++ b/deflect/qt/QmlStreamer.cpp @@ -53,9 +53,7 @@ QmlStreamer::QmlStreamer(const QString& qmlFile, const std::string& streamHost, connect(_impl.get(), &Impl::streamClosed, this, &QmlStreamer::streamClosed); } -QmlStreamer::~QmlStreamer() -{ -} +QmlStreamer::~QmlStreamer() {} void QmlStreamer::useAsyncSend(const bool async) { @@ -76,5 +74,11 @@ bool QmlStreamer::sendData(const QByteArray data) { return _impl->getStream()->sendData(data.constData(), data.size()); } + +void QmlStreamer::setRenderInterval(uint interval) +{ + _impl->setRenderInterval(interval); } -} + +} // namespace qt +} // namespace deflect diff --git a/deflect/qt/QmlStreamer.h b/deflect/qt/QmlStreamer.h index 3c7e14a..d313b88 100644 --- a/deflect/qt/QmlStreamer.h +++ b/deflect/qt/QmlStreamer.h @@ -108,6 +108,13 @@ class DEFLECT_API QmlStreamer : public QObject */ bool sendData(QByteArray data); + /** + * Set a value used to calculate intenal render timer + * needed in OffscreenQuickView + * @param interval interval to set. + */ + void setRenderInterval(uint interval); + signals: /** Emitted when the stream has been closed. */ void streamClosed(); @@ -118,7 +125,7 @@ class DEFLECT_API QmlStreamer : public QObject class Impl; std::unique_ptr _impl; }; -} -} +} // namespace qt +} // namespace deflect #endif diff --git a/deflect/qt/QmlStreamerImpl.cpp b/deflect/qt/QmlStreamerImpl.cpp index 93ceb58..7afac6e 100644 --- a/deflect/qt/QmlStreamerImpl.cpp +++ b/deflect/qt/QmlStreamerImpl.cpp @@ -208,6 +208,11 @@ void QmlStreamer::Impl::_send(QKeyEvent& keyEvent_) } } +void QmlStreamer::Impl::setRenderInterval(unsigned int interval) +{ + _quickView->setRenderInterval(interval); +} + bool QmlStreamer::Impl::_sendToWebengineviewItems(QKeyEvent& keyEvent_) { // Special handling for WebEngineView in offscreen Qml windows. diff --git a/deflect/qt/QmlStreamerImpl.h b/deflect/qt/QmlStreamerImpl.h index e24f910..3cd993d 100644 --- a/deflect/qt/QmlStreamerImpl.h +++ b/deflect/qt/QmlStreamerImpl.h @@ -76,6 +76,9 @@ class QmlStreamer::Impl : public QObject QQuickItem* getRootItem() { return _quickView->getRootItem(); } QQmlEngine* getQmlEngine() { return _quickView->getEngine(); } Stream* getStream() { return _stream.get(); } + + void setRenderInterval(unsigned int interval); + signals: void streamClosed(); @@ -134,7 +137,7 @@ private slots: AppNapSuspender _napSuspender; #endif }; -} -} +} // namespace qt +} // namespace deflect #endif