diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2016-08-04 10:04:57 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2016-08-04 08:24:03 +0000 |
commit | ffe113ab628adf6c22e96a22cf0bcda8e80c290d (patch) | |
tree | 7bcdf0ded48835d385ad00db7d86732d23873adb | |
parent | 5e60d281f1c84c76b80d001ddb3ac00c213de15f (diff) |
V4 Debugger: use engineAdded() instead of engineAboutToBeAdded()
It does not make a difference in functionality, but after engineAdded()
the server won't wait on a mutex anymore. Before this change, if you
managed to send a message to the V4 debugger after the server had
called aboutToBeAdded(), but before it had stopped waiting, you could
produce a deadlock by scheduling an event for the GUI thread that was
never delivered.
This is a cherry-pick of 18c4295e25503ae637a715858de5c94a3d105a92
from 5.7 as apparently the problem also occurs in 5.6.
Change-Id: Ie2343e6da4bd0b8956d41ff8ebd4d7594616ebd1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r-- | src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp | 4 | ||||
-rw-r--r-- | src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.h | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp b/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp index e9bcd772e5..7a9d4a66a4 100644 --- a/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp +++ b/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp @@ -611,7 +611,7 @@ QV4DebugServiceImpl::~QV4DebugServiceImpl() qDeleteAll(handlers); } -void QV4DebugServiceImpl::engineAboutToBeAdded(QQmlEngine *engine) +void QV4DebugServiceImpl::engineAdded(QQmlEngine *engine) { QMutexLocker lock(&m_configMutex); if (engine) { @@ -628,7 +628,7 @@ void QV4DebugServiceImpl::engineAboutToBeAdded(QQmlEngine *engine) } } } - QQmlConfigurableDebugService<QV4DebugService>::engineAboutToBeAdded(engine); + QQmlConfigurableDebugService<QV4DebugService>::engineAdded(engine); } void QV4DebugServiceImpl::engineAboutToBeRemoved(QQmlEngine *engine) diff --git a/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.h b/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.h index 658b1b3998..fafe7d90bf 100644 --- a/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.h +++ b/src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.h @@ -70,7 +70,7 @@ public: explicit QV4DebugServiceImpl(QObject *parent = 0); ~QV4DebugServiceImpl(); - void engineAboutToBeAdded(QQmlEngine *engine); + void engineAdded(QQmlEngine *engine); void engineAboutToBeRemoved(QQmlEngine *engine); void stateAboutToBeChanged(State state); |