Permalink
Browse files

Merge pull request #19 from j-b-m/master

Fix crash when loading svg in qimage producer from terminal
  • Loading branch information...
2 parents 1248276 + 598a4a1 commit ebae126f85e2bcd792fff3b1bfdf0aa67f3b8255 @ddennedy ddennedy committed Nov 19, 2012
Showing with 31 additions and 1 deletion.
  1. +31 −1 src/modules/qimage/qimage_wrapper.cpp
@@ -40,9 +40,11 @@
#ifdef USE_QT4
#include <QtGui/QImage>
#include <QtCore/QSysInfo>
+#include <QtGui/QApplication>
#include <QtCore/QMutex>
#include <QtCore/QtEndian>
#include <QtCore/QTemporaryFile>
+#include <QtCore/QLocale>
#endif
#ifdef USE_EXIF
@@ -63,6 +65,8 @@ static KComponentData *instance = 0L;
static KInstance *instance = 0L;
#endif
+static QApplication *app = NULL;
+
static void qimage_delete( void *data )
{
QImage *image = ( QImage * )data;
@@ -178,13 +182,39 @@ int refresh_qimage( producer_qimage self, mlt_frame frame )
sprintf( image_key, "%d", image_idx );
int disable_exif = mlt_properties_get_int( producer_props, "disable_exif" );
+
+
+ if ( app == NULL )
+ {
+ if ( qApp )
+ {
+ app = qApp;
+ }
+ else
+ {
+#ifdef linux
+ if ( getenv("DISPLAY") == 0 )
+ {
+ mlt_log_panic( MLT_PRODUCER_SERVICE( producer ), "Error, cannot render titles without an X11 environment.\nPlease either run melt from an X session or use a fake X server like xvfb:\nxvfb-run -a melt (...)\n" );
+ exit( 1 );
+ return -1;
+ }
+#endif
+ int argc = 1;
+ char* argv[1];
+ argv[0] = (char*) "xxx";
+ app = new QApplication( argc, argv );
+ const char *localename = mlt_properties_get_lcnumeric( MLT_SERVICE_PROPERTIES( MLT_PRODUCER_SERVICE( producer ) ) );
+ QLocale::setDefault( QLocale( localename ) );
+ }
+ }
if ( image_idx != self->qimage_idx )
self->qimage = NULL;
if ( !self->qimage || mlt_properties_get_int( producer_props, "_disable_exif" ) != disable_exif )
{
self->current_image = NULL;
- QImage *qimage = new QImage( mlt_properties_get_value( self->filenames, image_idx ) );
+ QImage *qimage = new QImage( QString::fromUtf8( mlt_properties_get_value( self->filenames, image_idx ) ) );
self->qimage = qimage;
if ( !qimage->isNull( ) )

0 comments on commit ebae126

Please sign in to comment.