Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
ecab2093
Commit
ecab2093
authored
Mar 11, 2009
by
Roberto Raggi
Browse files
Wait the future values.
parent
c395680e
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/plugins/cpptools/cppmodelmanager.cpp
View file @
ecab2093
...
...
@@ -35,6 +35,7 @@
#include
<functional>
#include
<QtConcurrentRun>
#include
<QFutureSynchronizer>
#include
<qtconcurrent/runextensions.h>
#include
<texteditor/itexteditor.h>
...
...
@@ -163,6 +164,7 @@ class CppPreprocessor: public CPlusPlus::Client
{
public:
CppPreprocessor
(
QPointer
<
CppModelManager
>
modelManager
);
virtual
~
CppPreprocessor
();
void
setWorkingCopy
(
const
QMap
<
QString
,
QByteArray
>
&
workingCopy
);
void
setIncludePaths
(
const
QStringList
&
includePaths
);
...
...
@@ -212,6 +214,7 @@ private:
Document
::
Ptr
m_currentDoc
;
QSet
<
QString
>
m_todo
;
QSet
<
QString
>
m_processed
;
QFutureSynchronizer
<
void
>
m_synchronizer
;
};
}
// namespace Internal
...
...
@@ -221,6 +224,11 @@ CppPreprocessor::CppPreprocessor(QPointer<CppModelManager> modelManager)
:
snapshot
(
modelManager
->
snapshot
()),
m_modelManager
(
modelManager
),
preprocess
(
this
,
&
env
)
{
m_synchronizer
.
setCancelOnWait
(
true
);
}
CppPreprocessor
::~
CppPreprocessor
()
{
}
void
CppPreprocessor
::
setWorkingCopy
(
const
QMap
<
QString
,
QByteArray
>
&
workingCopy
)
...
...
@@ -502,7 +510,7 @@ void CppPreprocessor::sourceNeeded(QString &fileName, IncludeType type,
snapshot
.
insert
(
doc
->
fileName
(),
doc
);
m_todo
.
remove
(
fileName
);
QtConcurrent
::
run
(
Process
(
m_modelManager
),
doc
);
m_synchronizer
.
addFuture
(
QtConcurrent
::
run
(
Process
(
m_modelManager
),
doc
)
)
;
(
void
)
switchDocument
(
previousDoc
);
}
...
...
@@ -528,6 +536,8 @@ Document::Ptr CppPreprocessor::switchDocument(Document::Ptr doc)
CppModelManager
::
CppModelManager
(
QObject
*
parent
)
:
CppModelManagerInterface
(
parent
)
{
m_synchronizer
.
setCancelOnWait
(
true
);
m_core
=
Core
::
ICore
::
instance
();
// FIXME
m_dirty
=
true
;
...
...
@@ -702,6 +712,8 @@ QFuture<void> CppModelManager::refreshSourceFiles(const QStringList &sourceFiles
QFuture
<
void
>
result
=
QtConcurrent
::
run
(
&
CppModelManager
::
parse
,
preproc
,
sourceFiles
);
m_synchronizer
.
addFuture
(
result
);
if
(
sourceFiles
.
count
()
>
1
)
{
m_core
->
progressManager
()
->
addTask
(
result
,
tr
(
"Indexing"
),
CppTools
::
Constants
::
TASK_INDEX
,
...
...
src/plugins/cpptools/cppmodelmanager.h
View file @
ecab2093
...
...
@@ -38,6 +38,7 @@
#include
<QMap>
#include
<QFutureInterface>
#include
<QFutureSynchronizer>
#include
<QMutex>
#include
<QTimer>
#include
<QTextEdit>
...
...
@@ -174,6 +175,8 @@ private:
QList
<
Editor
>
m_todo
;
QTimer
*
m_updateEditorSelectionsTimer
;
QFutureSynchronizer
<
void
>
m_synchronizer
;
};
}
// namespace Internal
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment