forked from qt-creator/qt-creator
On the beginning of the process of evaluating type hierarchy the evaluating thread may freeze on a first call to Snapshot::updateDependencyTable() for quite a long time (e.g. when showing the type hierarchy for IPlugin class inside Creator project - it may freeze up to about 3 seconds). So, when we want to cancel the evaluation (e.g. when we switch from "Type Hierarchy" into another view or when closing Creator) we may freeze for this period. In order to fix it we pass a future interface as an additional argument for Snapshot::updateDependencyTable() and cancel the update when cancellation of task was requested. Change-Id: I2147f10a68989587476c30369ec2ac552a57d5ae Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
60 lines
1.9 KiB
C++
60 lines
1.9 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2016 The Qt Company Ltd.
|
|
** Contact: https://www.qt.io/licensing/
|
|
**
|
|
** This file is part of Qt Creator.
|
|
**
|
|
** Commercial License Usage
|
|
** Licensees holding valid commercial Qt licenses may use this file in
|
|
** accordance with the commercial license agreement provided with the
|
|
** Software or, alternatively, in accordance with the terms contained in
|
|
** a written agreement between you and The Qt Company. For licensing terms
|
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
** information use the contact form at https://www.qt.io/contact-us.
|
|
**
|
|
** GNU General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU
|
|
** General Public License version 3 as published by the Free Software
|
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
|
** included in the packaging of this file. Please review the following
|
|
** information to ensure the GNU General Public License requirements will
|
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
|
**
|
|
****************************************************************************/
|
|
|
|
#pragma once
|
|
|
|
#include <cplusplus/CPlusPlusForwardDeclarations.h>
|
|
|
|
#include <utils/fileutils.h>
|
|
|
|
#include <QBitArray>
|
|
#include <QHash>
|
|
#include <QString>
|
|
#include <QStringList>
|
|
#include <QVector>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QFutureInterfaceBase;
|
|
QT_END_NAMESPACE
|
|
|
|
namespace CPlusPlus {
|
|
|
|
class Snapshot;
|
|
|
|
class CPLUSPLUS_EXPORT DependencyTable
|
|
{
|
|
private:
|
|
friend class Snapshot;
|
|
void build(QFutureInterfaceBase &futureInterface, const Snapshot &snapshot);
|
|
Utils::FilePaths filesDependingOn(const Utils::FilePath &fileName) const;
|
|
|
|
QVector<Utils::FilePath> files;
|
|
QHash<Utils::FilePath, int> fileIndex;
|
|
QHash<int, QList<int> > includes;
|
|
QVector<QBitArray> includeMap;
|
|
};
|
|
|
|
} // namespace CPlusPlus
|