aboutsummaryrefslogtreecommitdiffstats
path: root/src/quickwidgets/qquickwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quickwidgets/qquickwidget.cpp')
-rw-r--r--src/quickwidgets/qquickwidget.cpp16
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) {