diff options
Diffstat (limited to 'src/multimediawidgets')
-rw-r--r-- | src/multimediawidgets/multimediawidgets.pro | 2 | ||||
-rw-r--r-- | src/multimediawidgets/qpaintervideosurface.cpp | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/multimediawidgets/multimediawidgets.pro b/src/multimediawidgets/multimediawidgets.pro index 8e4a78278..57d4194ec 100644 --- a/src/multimediawidgets/multimediawidgets.pro +++ b/src/multimediawidgets/multimediawidgets.pro @@ -28,4 +28,6 @@ qtConfig(graphicsview) { HEADERS += $$PUBLIC_HEADERS $$PRIVATE_HEADERS +msvc:lessThan(QMAKE_MSC_VER, 1900): QMAKE_CXXFLAGS += -Zm200 + load(qt_module) diff --git a/src/multimediawidgets/qpaintervideosurface.cpp b/src/multimediawidgets/qpaintervideosurface.cpp index 214e5ec7e..0147690e1 100644 --- a/src/multimediawidgets/qpaintervideosurface.cpp +++ b/src/multimediawidgets/qpaintervideosurface.cpp @@ -191,6 +191,10 @@ QAbstractVideoSurface::Error QVideoSurfaceGenericPainter::paint( m_imageSize.height(), m_frame.bytesPerLine(), m_imageFormat); + // Do not render into ARGB32 images using QPainter. + // Using QImage::Format_ARGB32_Premultiplied is significantly faster. + if (m_imageFormat == QImage::Format_ARGB32) + image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied); const QTransform oldTransform = painter->transform(); QTransform transform = oldTransform; @@ -1250,8 +1254,8 @@ QAbstractVideoSurface::Error QVideoSurfaceGlslPainter::paint( if (scissorTestEnabled) glEnable(GL_SCISSOR_TEST); - const int width = QOpenGLContext::currentContext()->surface()->size().width(); - const int height = QOpenGLContext::currentContext()->surface()->size().height(); + const int width = painter->viewport().width(); + const int height = painter->viewport().height(); const QTransform transform = painter->deviceTransform(); |