diff options
Diffstat (limited to 'src/quickwidgets/qquickwidget.cpp')
| -rw-r--r-- | src/quickwidgets/qquickwidget.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp index 9cf03a2ca1..c64eff8aba 100644 --- a/src/quickwidgets/qquickwidget.cpp +++ b/src/quickwidgets/qquickwidget.cpp @@ -251,9 +251,7 @@ void QQuickWidgetPrivate::handleWindowChange() QObject::connect(renderControl, SIGNAL(renderRequested()), q, SLOT(triggerUpdate())); QObject::connect(renderControl, SIGNAL(sceneChanged()), q, SLOT(triggerUpdate())); - if (!source.isEmpty()) - execute(); - else if (QQuickItem *sgItem = qobject_cast<QQuickItem *>(root)) + if (QQuickItem *sgItem = qobject_cast<QQuickItem *>(root)) sgItem->setParentItem(offscreenWindow->contentItem()); } @@ -1119,7 +1117,17 @@ void QQuickWidget::createFramebufferObject() else samples = 0; - const QSize fboSize = size() * devicePixelRatio(); + const int minTexSize = d->rhi->resourceLimit(QRhi::TextureSizeMin); + const int maxTexSize = d->rhi->resourceLimit(QRhi::TextureSizeMax); + + QSize fboSize = size() * devicePixelRatio(); + if (fboSize.width() > maxTexSize || fboSize.height() > maxTexSize) { + qWarning("QQuickWidget: Requested backing texture size is %dx%d, but the maximum texture size for the 3D API implementation is %dx%d", + fboSize.width(), fboSize.height(), + maxTexSize, maxTexSize); + } + fboSize.setWidth(qMin(maxTexSize, qMax(minTexSize, fboSize.width()))); + fboSize.setHeight(qMin(maxTexSize, qMax(minTexSize, fboSize.height()))); // Could be a simple hide - show, in which case the previous texture is just fine. if (!d->outputTexture) { |
