diff options
author | Gareth Stockwell <ext-gareth.stockwell@nokia.com> | 2012-02-10 14:09:59 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-13 03:01:49 +0100 |
commit | 1ee21da63e3d6091a6c31d05af3268c5d0cccca0 (patch) | |
tree | c00bdd24f039f12d333113407f55efaa92a64aaf /examples/video/qmlvideofx/filereader.cpp | |
parent | f21c62394eaba1687eb2d81fb6b188ba256f41ba (diff) |
Fix shader file loading in qmlvideofx example
Each effect is implemented as a QML element, whose
fragment/vertexShaderFilename properties specify paths from which
shader programs are loaded. These paths are relative to the application
installation directory, e.g. "shaders/billboard.fsh". If the current
directory from which the application is launched does not match the
installation directory, shader program loading fails. This patch
converts the relative filename provided by the QML element into an
absolute path before attempting to open the file.
Change-Id: I8ed39d271c4f1f59180588843e500ed73a93a543
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Diffstat (limited to 'examples/video/qmlvideofx/filereader.cpp')
-rw-r--r-- | examples/video/qmlvideofx/filereader.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/examples/video/qmlvideofx/filereader.cpp b/examples/video/qmlvideofx/filereader.cpp index 26997d7fc..1d6b03279 100644 --- a/examples/video/qmlvideofx/filereader.cpp +++ b/examples/video/qmlvideofx/filereader.cpp @@ -41,14 +41,36 @@ #include "filereader.h" #include "trace.h" +#include <QtCore/QCoreApplication> +#include <QtCore/QDir> #include <QtCore/QFile> +#include <QtCore/QFileInfo> #include <QtCore/QTextStream> +QString adjustPath(const QString &path) +{ +#ifdef Q_OS_UNIX +#ifdef Q_OS_MAC + if (!QDir::isAbsolutePath(path)) + return QCoreApplication::applicationDirPath() + + QLatin1String("/../Resources/") + path; +#else + QString pathInInstallDir; + const QString applicationDirPath = QCoreApplication::applicationDirPath(); + pathInInstallDir = QString::fromAscii("%1/../%2").arg(applicationDirPath, path); + + if (QFileInfo(pathInInstallDir).exists()) + return pathInInstallDir; +#endif +#endif + return path; +} + QString FileReader::readFile(const QString &fileName) { qtTrace() << "FileReader::readFile" << "fileName" << fileName; QString content; - QFile file(fileName); + QFile file(adjustPath(fileName)); if (file.open(QIODevice::ReadOnly)) { QTextStream stream(&file); content = stream.readAll(); |