blob: c93458a8273bf695931d58e909800c9946a88217 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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;
|