diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2018-07-22 22:11:37 +0200 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2018-07-22 23:49:15 +0200 |
commit | 9d08e036fc964ca46457d1784c244fb6b34b6284 (patch) | |
tree | 54cd9d87bb32ff6a0aa30ea4b1a1f8b9f0d12a33 /media-libs/mlt | |
parent | media-libs/mlt: Fix libav build errors (diff) | |
download | gentoo-9d08e036fc964ca46457d1784c244fb6b34b6284.tar.gz gentoo-9d08e036fc964ca46457d1784c244fb6b34b6284.tar.bz2 gentoo-9d08e036fc964ca46457d1784c244fb6b34b6284.zip |
media-libs/mlt: Fix png 8-bit segfault
Package-Manager: Portage-2.3.43, Repoman-2.3.10
Diffstat (limited to 'media-libs/mlt')
-rw-r--r-- | media-libs/mlt/files/mlt-6.6.0-png-segfault.patch | 36 | ||||
-rw-r--r-- | media-libs/mlt/mlt-6.6.0-r1.ebuild | 1 |
2 files changed, 37 insertions, 0 deletions
diff --git a/media-libs/mlt/files/mlt-6.6.0-png-segfault.patch b/media-libs/mlt/files/mlt-6.6.0-png-segfault.patch new file mode 100644 index 000000000000..c93458a8273b --- /dev/null +++ b/media-libs/mlt/files/mlt-6.6.0-png-segfault.patch @@ -0,0 +1,36 @@ +From e013fd7c2f49b40a1b482d712d531329d538da88 Mon Sep 17 00:00:00 2001 +From: Brian Matherly <code@brianmatherly.com> +Date: Wed, 31 Jan 2018 20:57:42 -0600 +Subject: [PATCH] Fix segmentation fault when using qimage png producer #296 + +--- + src/modules/qt/qimage_wrapper.cpp | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/modules/qt/qimage_wrapper.cpp b/src/modules/qt/qimage_wrapper.cpp +index 436f65d15..99b4ebf8e 100644 +--- a/src/modules/qt/qimage_wrapper.cpp ++++ b/src/modules/qt/qimage_wrapper.cpp +@@ -229,18 +229,19 @@ void refresh_image( producer_qimage self, mlt_frame frame, mlt_image_format form + QString interps = mlt_properties_get( properties, "rescale.interp" ); + bool interp = ( interps != "nearest" ) && ( interps != "none" ); + QImage *qimage = static_cast<QImage*>( self->qimage ); ++ int has_alpha = qimage->hasAlphaChannel(); ++ QImage::Format qimageFormat = has_alpha ? QImage::Format_ARGB32 : QImage::Format_RGB32; + + // Note - the original qimage is already safe and ready for destruction +- if ( qimage->depth() == 1 ) ++ if ( qimage->format() != qimageFormat ) + { +- QImage temp = qimage->convertToFormat( QImage::Format_RGB32 ); ++ QImage temp = qimage->convertToFormat( qimageFormat ); + delete qimage; + qimage = new QImage( temp ); + self->qimage = qimage; + } + QImage scaled = interp? qimage->scaled( QSize( width, height ) ) : + qimage->scaled( QSize(width, height), Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); +- int has_alpha = scaled.hasAlphaChannel(); + + // Store width and height + self->current_width = width; diff --git a/media-libs/mlt/mlt-6.6.0-r1.ebuild b/media-libs/mlt/mlt-6.6.0-r1.ebuild index 3e57dbb3e1e8..b0b811b945d6 100644 --- a/media-libs/mlt/mlt-6.6.0-r1.ebuild +++ b/media-libs/mlt/mlt-6.6.0-r1.ebuild @@ -98,6 +98,7 @@ DOCS=( AUTHORS ChangeLog NEWS README docs/{framework,melt,mlt{++,-xml}}.txt ) PATCHES=( "${FILESDIR}"/${P}-vorbis-ffmpeg-3.4.patch "${FILESDIR}"/${P}-libav-{1,2,3}.patch + "${FILESDIR}"/${P}-png-segfault.patch ) pkg_setup() { |