コード例 #1
0
InputStream *FSDirectory::openFile(const QString &name)
{
	QMutexLocker locker(&m_mutex);
	QString path = filePath(name);
	FSFileSharedPtr file = m_openInputFiles.value(path).toStrongRef();
	FSInputStream *input;
	if (file.isNull()) {
		m_openInputFiles.remove(path);
		input = FSInputStream::open(path);
		m_openInputFiles.insert(path, input->file());
	}
	else {
		input = new FSInputStream(file);
	}
	return input;
}
コード例 #2
0
InputStream *FSDirectory::openFile(const QString &name)
{
	QMutexLocker locker(&m_mutex);
	QString path = filePath(name);
	FSFileSharedPtr file = m_openInputFiles.value(path);
	if (m_mmap) {
		if (file.isNull()) {
			MMapInputStream* input = MMapInputStream::open(path);
			m_openInputFiles.insert(path, input->file());
			return input;
		}
		return new MMapInputStream(file);
	}
	if (file.isNull()) {
		FSInputStream* input = FSInputStream::open(path);
		m_openInputFiles.insert(path, input->file());
		return input;
	}
	return new FSInputStream(file);
}