aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.h
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@theqtcompany.com>2015-11-30 12:04:59 +0100
committerUlf Hermann <ulf.hermann@theqtcompany.com>2016-01-07 16:25:12 +0000
commiteae5a20b099450985442c70186fd7a7be442f133 (patch)
treee7be003e4ed86ef69ad334eebfd8689cdb1e25b3 /src/plugins/qmltooling/qmldbg_debugger/qv4debugger.h
parent881bb537c92684d25fae4fec9ac2dd61e1f9723c (diff)
V4 Debugger: Allow expression evaluation without pausing
We can schedule jobs into the GUI thread just fine, even if the debugger is running. They will run in global scope then. The only restriction is that we need exactly one engine to be running in order to do that, as otherwise we cannot decide which engine to use. To avoid interaction with the engine from the debugger thread we move the value lookup functionality into the data collector, and drop the RefHolder. Change-Id: Ifae124d70f42e488ed9a1b6794baef638992ddb1 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src/plugins/qmltooling/qmldbg_debugger/qv4debugger.h')
-rw-r--r--src/plugins/qmltooling/qmldbg_debugger/qv4debugger.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.h b/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.h
index 8662259264..abb43f82f3 100644
--- a/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.h
+++ b/src/plugins/qmltooling/qmldbg_debugger/qv4debugger.h
@@ -55,6 +55,7 @@
QT_BEGIN_NAMESPACE
+class QV4DataCollector;
class QV4Debugger : public QV4::Debugging::Debugger
{
Q_OBJECT
@@ -110,8 +111,10 @@ public:
};
QV4Debugger(QV4::ExecutionEngine *engine);
+ ~QV4Debugger();
QV4::ExecutionEngine *engine() const;
+ QV4DataCollector *collector() const;
void pause();
void resume(Speed speed);
@@ -153,6 +156,9 @@ public:
signals:
void debuggerPaused(QV4Debugger *self, QV4Debugger::PauseReason reason);
+private slots:
+ void runJobUnpaused();
+
private:
// requires lock to be held
void pauseAndWait(PauseReason reason);
@@ -174,6 +180,7 @@ private:
Job *m_gatherSources;
Job *m_runningJob;
+ QV4DataCollector *m_collector;
QWaitCondition m_jobIsRunning;
};