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>
81 lines
2.7 KiB
C++
81 lines
2.7 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
|
|
** Contact: http://www.qt-project.org/
|
|
**
|
|
** This file is part of the Qt Mobility Components.
|
|
**
|
|
** $QT_BEGIN_LICENSE:LGPL$
|
|
** GNU Lesser General Public License Usage
|
|
** This file may be used under the terms of the GNU Lesser General Public
|
|
** License version 2.1 as published by the Free Software Foundation and
|
|
** appearing in the file LICENSE.LGPL included in the packaging of this
|
|
** file. Please review the following information to ensure the GNU Lesser
|
|
** General Public License version 2.1 requirements will be met:
|
|
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
**
|
|
** In addition, as a special exception, Nokia gives you certain additional
|
|
** rights. These rights are described in the Nokia Qt LGPL Exception
|
|
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
|
**
|
|
** GNU General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU General
|
|
** Public License version 3.0 as published by the Free Software Foundation
|
|
** and appearing in the file LICENSE.GPL included in the packaging of this
|
|
** file. Please review the following information to ensure the GNU General
|
|
** Public License version 3.0 requirements will be met:
|
|
** http://www.gnu.org/copyleft/gpl.html.
|
|
**
|
|
** Other Usage
|
|
** Alternatively, this file may be used in accordance with the terms and
|
|
** conditions contained in a signed written agreement between you and Nokia.
|
|
**
|
|
**
|
|
**
|
|
**
|
|
**
|
|
**
|
|
** $QT_END_LICENSE$
|
|
**
|
|
****************************************************************************/
|
|
|
|
#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(adjustPath(fileName));
|
|
if (file.open(QIODevice::ReadOnly)) {
|
|
QTextStream stream(&file);
|
|
content = stream.readAll();
|
|
}
|
|
return content;
|
|
}
|
|
|