From 1a5f865d53dfab91db1abaeca8d79f45eb9d090f Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sun, 18 Jul 2010 13:26:01 +0000 Subject: [PATCH] Bundle an empty font file and pass it to projectM so it doesn't crash when FTGL is turned on. --- data/blank.ttf | Bin 0 -> 10300 bytes data/data.qrc | 1 + src/visualisations/projectmvisualisation.cpp | 11 ++++++++++- src/visualisations/projectmvisualisation.h | 4 ++++ 4 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 data/blank.ttf diff --git a/data/blank.ttf b/data/blank.ttf new file mode 100644 index 0000000000000000000000000000000000000000..bba4ca061127fefa06c90f7fb4e03f49a47590c4 GIT binary patch literal 10300 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 literal 0 HcmV?d00001 diff --git a/data/data.qrc b/data/data.qrc index 2c399e97c..2576b88ef 100644 --- a/data/data.qrc +++ b/data/data.qrc @@ -250,5 +250,6 @@ icons/32x32/go-down.png icons/48x48/go-down.png hypnotoad.gif + blank.ttf diff --git a/src/visualisations/projectmvisualisation.cpp b/src/visualisations/projectmvisualisation.cpp index a2f161152..39d4e1224 100644 --- a/src/visualisations/projectmvisualisation.cpp +++ b/src/visualisations/projectmvisualisation.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -92,6 +93,12 @@ void ProjectMVisualisation::InitProjectM() { break; } + // Write an empty font out to a temporary directory. libprojectM dies if it's + // compiled with FTGL support and you pass it an empty font URL, so we have + // to give it a dummy font even though we won't use it. + temporary_font_.reset(QTemporaryFile::createLocalFile(":blank.ttf")); + const QString font_path = temporary_font_->fileName(); + // Create projectM settings projectM::Settings s; s.meshX = 32; @@ -106,12 +113,14 @@ void ProjectMVisualisation::InitProjectM() { s.shuffleEnabled = true; s.easterEgg = 0; // ?? s.softCutRatingsEnabled = false; + s.menuFontURL = font_path.toStdString(); + s.titleFontURL = font_path.toStdString(); projectm_.reset(new projectM(s)); preset_model_ = new ProjectMPresetModel(this, this); Load(); - if (preset_path.isNull()) { + if (font_path.isNull()) { qWarning("ProjectM presets could not be found, search path was:\n %s", paths.join("\n ").toLocal8Bit().constData()); QMessageBox::warning(NULL, tr("Missing projectM presets"), diff --git a/src/visualisations/projectmvisualisation.h b/src/visualisations/projectmvisualisation.h index 5700417c2..a46691b5c 100644 --- a/src/visualisations/projectmvisualisation.h +++ b/src/visualisations/projectmvisualisation.h @@ -29,6 +29,8 @@ class projectM; class ProjectMPresetModel; +class QTemporaryFile; + class ProjectMVisualisation : public QGraphicsScene, public BufferConsumer { Q_OBJECT public: @@ -79,6 +81,8 @@ private: Mode mode_; int duration_; + boost::scoped_ptr temporary_font_; + std::vector default_rating_list_; int texture_size_;