From f795aa84ec3e8955998270fc22658bd2dae44984 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Fri, 13 Jul 2018 18:24:41 +0200 Subject: [PATCH] Avoid one more deadlock in gsi::Proxy. --- src/gsi/gsi/gsiObject.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gsi/gsi/gsiObject.cc b/src/gsi/gsi/gsiObject.cc index 360acd9e4..a51a1b287 100644 --- a/src/gsi/gsi/gsiObject.cc +++ b/src/gsi/gsi/gsiObject.cc @@ -193,14 +193,15 @@ Proxy::obj_internal () void Proxy::object_status_changed (gsi::ObjectBase::StatusEventType type) { - QMutexLocker locker (&m_lock); - if (type == gsi::ObjectBase::ObjectDestroyed) { + QMutexLocker locker (&m_lock); m_destroyed = true; // NOTE: must be set before detach and indicates that the object was destroyed externally. detach_internal (); } else if (type == gsi::ObjectBase::ObjectKeep) { + // NOTE: don't lock this as this will cause a deadlock from keep() m_owned = false; } else if (type == gsi::ObjectBase::ObjectRelease) { + // NOTE: don't lock this as this will cause a deadlock from release() m_owned = true; } }