29 : QObject(parent), m_fn(fn)
31 static bool registered =
false;
33 qRegisterMetaType<ImageRequest>(
"ImageRequest");
34 qRegisterMetaType<ImageResult>(
"ImageResult");
37 m_thread =
new QThread(
this);
38 connect(m_thread, &QThread::started,
this, &AsyncImageLoader::processLoop);
39 this->moveToThread(m_thread);
45 QMutexLocker lock(&m_mutex);
55 QMutexLocker lock(&m_mutex);
56 m_latestRequest = req;
57 m_hasNewRequest =
true;
70 QMutexLocker lock(&m_mutex);
71 while (!m_hasNewRequest && !m_quit)
72 m_wait.wait(&m_mutex);
78 work = *m_latestRequest;
79 m_hasNewRequest =
false;
85 emit finished(work, result);
94 QWaitCondition m_wait;
96 std::optional<ImageRequest> m_latestRequest;
97 bool m_hasNewRequest =
false;