From 2f322997e3ee6651b7517520355b7eda5f190925 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Mon, 26 Apr 2021 17:23:21 +0200 Subject: Fix test failures in tst_qvideowidget and tst_qgraphicsvideoitem This passes now, but might require some more massaging to get correct display rects for the widget case. Change-Id: I4673240bb1afacfe714580e586e293c09f690d11 Reviewed-by: Doris Verria Reviewed-by: Lars Knoll --- src/multimediawidgets/qgraphicsvideoitem.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'src/multimediawidgets/qgraphicsvideoitem.cpp') diff --git a/src/multimediawidgets/qgraphicsvideoitem.cpp b/src/multimediawidgets/qgraphicsvideoitem.cpp index 240a9eb32..e72ce90ad 100644 --- a/src/multimediawidgets/qgraphicsvideoitem.cpp +++ b/src/multimediawidgets/qgraphicsvideoitem.cpp @@ -64,10 +64,8 @@ public: QGraphicsVideoItem *q_ptr = nullptr; QVideoSink *sink = nullptr; - Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio; QRectF rect; QRectF boundingRect; - QRectF sourceRect; QSizeF nativeSize; QVideoFrame m_frame; @@ -81,7 +79,10 @@ void QGraphicsVideoItemPrivate::updateRects() q_ptr->prepareGeometryChange(); boundingRect = rect; - if (aspectRatioMode == Qt::KeepAspectRatio && !nativeSize.isEmpty()) { + if (nativeSize.isEmpty()) + return; + + if (sink->aspectRatioMode() == Qt::KeepAspectRatio) { QSizeF size = nativeSize; size.scale(rect.size(), Qt::KeepAspectRatio); @@ -93,13 +94,10 @@ void QGraphicsVideoItemPrivate::updateRects() void QGraphicsVideoItemPrivate::_q_present(const QVideoFrame &frame) { m_frame = frame; - if (q_ptr->isObscured()) { - q_ptr->update(boundingRect); - } else { - q_ptr->update(boundingRect); - } + q_ptr->update(boundingRect); + if (frame.isValid()) { - const QSize &size = frame.size(); + const QSize &size = frame.surfaceFormat().viewport().size(); if (nativeSize != size) { nativeSize = size; -- cgit v1.2.3