From ffe113ab628adf6c22e96a22cf0bcda8e80c290d Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 4 Aug 2016 10:04:57 +0200 Subject: 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 --- src/plugins/qmltooling/qmldbg_debugger/qv4debugservice.cpp | 4 ++-- 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::engineAboutToBeAdded(engine); + QQmlConfigurableDebugService::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); -- cgit v1.2.3