fix(unix): Add foreign Qt threds in legacy POSIX thread impl

This commit is contained in:
Nick Bolton 2026-03-26 11:28:16 +00:00
parent aaef600ffa
commit b0985a2740
2 changed files with 16 additions and 1 deletions

View file

@ -517,13 +517,27 @@ void ArchMultithreadPosix::startSignalHandler()
ArchThreadImpl *ArchMultithreadPosix::find(pthread_t thread)
{
ArchThreadImpl *impl = findNoRef(thread);
ArchThreadImpl *impl = findNoRefOrInsert(thread);
if (impl != nullptr) {
refThread(impl);
}
return impl;
}
ArchThreadImpl *ArchMultithreadPosix::findNoRefOrInsert(pthread_t thread)
{
ArchThreadImpl *impl = findNoRef(thread);
if (impl == nullptr) {
// create thread for calling thread which isn't in our list and
// add it to the list. this can happen when a foreign thread
// (e.g. a Qt thread) calls into the arch layer.
impl = new ArchThreadImpl;
impl->m_thread = thread;
insert(impl);
}
return impl;
}
ArchThreadImpl *ArchMultithreadPosix::findNoRef(pthread_t thread)
{
// linear search

View file

@ -84,6 +84,7 @@ private:
ArchThreadImpl *find(pthread_t thread);
ArchThreadImpl *findNoRef(pthread_t thread);
ArchThreadImpl *findNoRefOrInsert(pthread_t thread);
void insert(ArchThreadImpl *thread);
void erase(const ArchThreadImpl *thread);