22#include <QWaitCondition>
54 : m_action(
std::move(
action)), m_priority(priority), m_notify(notify)
55 { m_images.append(im); }
67 : m_images(
std::move(list)),
133 void ClearThumbs(
int devId,
const QString &
action);
134 QString DeleteThumbs(
const ImageList &images);
135 void CreateThumbnail(
const ImagePtrK &im,
137 bool notify =
false);
139 void PauseBackground(
bool pause);
149 {
return (im.m_filePath.count(
'/') * 1000) + im.m_id; }
Represents a picture, video or directory.
DBFS & m_dbfs
Db/filesystem adapter.
ThumbThread< DBFS > * m_imageThread
Thread generating picture thumbnails.
ThumbThread< DBFS > * m_videoThread
Thread generating video previews.
This is a wrapper around QThread that does several additional things.
A generator request that is queued.
int m_priority
Request reason/priority.
ThumbTask(QString action, const ImagePtrK &im, int priority=kUrgentPriority, bool notify=false)
Construct request for a single image.
bool m_notify
If true, a "THUMBNAIL_CREATED" event is broadcast.
QString m_action
Request action: Create, delete etc.
ThumbTask(QString action, ImageListK list, int priority=kUrgentPriority, bool notify=false)
Construct request for a list of images/dirs.
ImageListK m_images
Images for thumbnail task.
A generator worker thread.
QString CreateThumbnail(const ImagePtrK &im, int thumbPriority)
Generate thumbnail for an image.
void run() override
Handles thumbnail requests by priority.
~ThumbThread() override
Destructor.
ThumbThread(const QString &name, DBFS *const dbfs)
Constructor.
ThumbQueue m_requestQ
Synchronises completed tasks.
QMultiMap< int, TaskPtr > ThumbQueue
A priority queue where 0 is highest priority.
QWaitCondition m_taskDone
QMutex m_mutex
Queue protection.
bool m_doBackground
Whether to process background tasks.
DBFS & m_dbfs
Database/filesystem adapter.
ThumbQueue m_backgroundQ
Priority queue of background tasks.
void PauseBackground(bool pause)
Pauses or restarts processing of background tasks (scanner requests)
static void RemoveTasks(ThumbQueue &queue, int devId)
void cancel()
Clears all queues so that the thread will terminate.
void AbortDevice(int devId, const QString &action)
Clears thumbnail request queue.
void Enqueue(const TaskPtr &task)
Queues a Create request.
QSharedPointer< ThumbTask > TaskPtr
ImageThumbPriority
Priority of a thumbnail request.
@ kUrgentPriority
Scanner request needed to complete a scan.
@ kPicRequestPriority
Client request to display an image thumbnail.
@ kDirRequestPriority
Client request to display a directory thumbnail.
@ kBackgroundPriority
Scanner background request.
Common types used by Gallery.
QVector< ImagePtr > ImageList
QList< ImagePtrK > ImageListK
QSharedPointer< ImageItemK > ImagePtrK