mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 16:58:09 +02:00
Guards and warnings in QML rendering
This commit is contained in:
parent
04543e7b0e
commit
64ec56bf89
2 changed files with 11 additions and 5 deletions
|
@ -175,6 +175,7 @@ private:
|
||||||
doneCurrent();
|
doneCurrent();
|
||||||
|
|
||||||
getContextObject()->moveToThread(QCoreApplication::instance()->thread());
|
getContextObject()->moveToThread(QCoreApplication::instance()->thread());
|
||||||
|
_thread.quit();
|
||||||
_cond.wakeOne();
|
_cond.wakeOne();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,7 +229,7 @@ private:
|
||||||
|
|
||||||
_quickWindow->setRenderTarget(GetName(*_fbo), QSize(_size.x, _size.y));
|
_quickWindow->setRenderTarget(GetName(*_fbo), QSize(_size.x, _size.y));
|
||||||
|
|
||||||
{
|
try {
|
||||||
PROFILE_RANGE("qml_render")
|
PROFILE_RANGE("qml_render")
|
||||||
TexturePtr texture = _textures.getNextTexture();
|
TexturePtr texture = _textures.getNextTexture();
|
||||||
_fbo->Bind(Framebuffer::Target::Draw);
|
_fbo->Bind(Framebuffer::Target::Draw);
|
||||||
|
@ -245,8 +246,10 @@ private:
|
||||||
DefaultFramebuffer().Bind(Framebuffer::Target::Draw);
|
DefaultFramebuffer().Bind(Framebuffer::Target::Draw);
|
||||||
_quickWindow->resetOpenGLState();
|
_quickWindow->resetOpenGLState();
|
||||||
_escrow.submit(GetName(*texture));
|
_escrow.submit(GetName(*texture));
|
||||||
|
_lastRenderTime = usecTimestampNow();
|
||||||
|
} catch (std::runtime_error& error) {
|
||||||
|
qWarning() << "Failed to render QML " << error.what();
|
||||||
}
|
}
|
||||||
_lastRenderTime = usecTimestampNow();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void aboutToQuit() {
|
void aboutToQuit() {
|
||||||
|
@ -321,7 +324,7 @@ OffscreenQmlSurface::~OffscreenQmlSurface() {
|
||||||
|
|
||||||
void OffscreenQmlSurface::create(QOpenGLContext* shareContext) {
|
void OffscreenQmlSurface::create(QOpenGLContext* shareContext) {
|
||||||
_renderer = new OffscreenQmlRenderer(this, shareContext);
|
_renderer = new OffscreenQmlRenderer(this, shareContext);
|
||||||
|
_renderer->_renderControl->_renderWindow = _proxyWindow;
|
||||||
// Create a QML engine.
|
// Create a QML engine.
|
||||||
_qmlEngine = new QQmlEngine;
|
_qmlEngine = new QQmlEngine;
|
||||||
if (!_qmlEngine->incubationController()) {
|
if (!_qmlEngine->incubationController()) {
|
||||||
|
@ -610,7 +613,10 @@ bool OffscreenQmlSurface::isPaused() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OffscreenQmlSurface::setProxyWindow(QWindow* window) {
|
void OffscreenQmlSurface::setProxyWindow(QWindow* window) {
|
||||||
_renderer->_renderControl->_renderWindow = window;
|
_proxyWindow = window;
|
||||||
|
if (_renderer && _renderer->_renderControl) {
|
||||||
|
_renderer->_renderControl->_renderWindow = window;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QObject* OffscreenQmlSurface::getEventHandler() {
|
QObject* OffscreenQmlSurface::getEventHandler() {
|
||||||
|
|
|
@ -95,7 +95,7 @@ private:
|
||||||
bool _paused{ true };
|
bool _paused{ true };
|
||||||
uint8_t _maxFps{ 60 };
|
uint8_t _maxFps{ 60 };
|
||||||
MouseTranslator _mouseTranslator{ [](const QPointF& p) { return p.toPoint(); } };
|
MouseTranslator _mouseTranslator{ [](const QPointF& p) { return p.toPoint(); } };
|
||||||
|
QWindow* _proxyWindow { nullptr };
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue