Mercurial > hg > svcore
diff base/ById.cpp @ 1759:b679bae1627b by-id
Print object name as well (if a QObject)
author | Chris Cannam |
---|---|
date | Mon, 08 Jul 2019 10:07:55 +0100 |
parents | 6d09d68165a4 |
children | ee7fd2c01d87 |
line wrap: on
line diff
--- a/base/ById.cpp Sun Jul 07 16:42:47 2019 +0100 +++ b/base/ById.cpp Mon Jul 08 10:07:55 2019 +0100 @@ -50,10 +50,16 @@ SVCERR << "WARNING: ById map is not empty at close; some items have not been released" << endl; SVCERR << " Unreleased items are:" << endl; for (const auto &p: m_items) { - if (p.second && p.second.use_count() > 0) { - SVCERR << " - id #" << p.first - << ": type " << typeid(*p.second.get()).name() - << ", use count " << p.second.use_count() << endl; + auto ptr = p.second; + if (ptr && ptr.use_count() > 0) { + QString message = QString("id #%1: type %2") + .arg(p.first).arg(typeid(*ptr.get()).name()); + if (auto qobj = std::dynamic_pointer_cast<QObject>(ptr)) { + message += QString(", object name \"%1\"") + .arg(qobj->objectName()); + } + message += QString(", use count %1").arg(ptr.use_count()); + SVCERR << " - " << message << endl; } } }