MythTV  master
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
ThumbThread< DBFS > Class Template Reference

A generator worker thread. More...

#include <imagethumbs.h>

Inheritance diagram for ThumbThread< DBFS >:
Inheritance graph
[legend]
Collaboration diagram for ThumbThread< DBFS >:
Collaboration graph
[legend]

Public Member Functions

 ThumbThread (const QString &name, DBFS *const dbfs)
 Constructor. More...
 
 ~ThumbThread () override
 Destructor. More...
 
void cancel ()
 Clears all queues so that the thread will terminate. More...
 
void Enqueue (const TaskPtr &task)
 Queues a Create request. More...
 
void AbortDevice (int devId, const QString &action)
 Clears thumbnail request queue. More...
 
void PauseBackground (bool pause)
 Pauses or restarts processing of background tasks (scanner requests) More...
 
- Public Member Functions inherited from MThread
 MThread (const QString &objectName)
 Standard constructor. More...
 
 MThread (const QString &objectName, QRunnable *runnable)
 Use this constructor if you want the default run() method to run the QRunnable's run() method instead of entering the Qt event loop. More...
 
virtual ~MThread ()
 
 MThread (const MThread &)=delete
 
MThreadoperator= (const MThread &)=delete
 
void RunProlog (void)
 Sets up a thread, call this if you reimplement run(). More...
 
void RunEpilog (void)
 Cleans up a thread's resources, call this if you reimplement run(). More...
 
QThread * qthread (void)
 Returns the thread, this will always return the same pointer no matter how often you restart the thread. More...
 
void setObjectName (const QString &name)
 
QString objectName (void) const
 
void setPriority (QThread::Priority priority)
 
QThread::Priority priority (void) const
 
bool isFinished (void) const
 
bool isRunning (void) const
 
void setStackSize (uint stackSize)
 
uint stackSize (void) const
 
void exit (int retcode=0)
 Use this to exit from the thread if you are using a Qt event loop. More...
 
void start (QThread::Priority p=QThread::InheritPriority)
 Tell MThread to start running the thread in the near future. More...
 
void terminate (void)
 Kill a thread unsafely. More...
 
void quit (void)
 calls exit(0) More...
 
bool wait (std::chrono::milliseconds time=std::chrono::milliseconds::max())
 Wait for the MThread to exit, with a maximum timeout. More...
 

Protected Member Functions

void run () override
 Handles thumbnail requests by priority. More...
 
- Protected Member Functions inherited from MThread
int exec (void)
 Enters the qt event loop. call exit or quit to exit thread. More...
 

Private Types

using ThumbQueue = QMultiMap< int, TaskPtr >
 A priority queue where 0 is highest priority. More...
 

Private Member Functions

QString CreateThumbnail (ImagePtrK im, int thumbPriority)
 Generate thumbnail for an image. More...
 

Static Private Member Functions

static void RemoveTasks (ThumbQueue &queue, int devId)
 

Private Attributes

DBFS & m_dbfs
 Database/filesystem adapter. More...
 
QWaitCondition m_taskDone
 
ThumbQueue m_requestQ
 Synchronises completed tasks. More...
 
ThumbQueue m_backgroundQ
 Priority queue of background tasks. More...
 
bool m_doBackground {true}
 Whether to process background tasks. More...
 
QMutex m_mutex
 Queue protection. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from MThread
static void ThreadSetup (const QString &name)
 This is to be called on startup in those few threads that haven't been ported to MThread. More...
 
static void ThreadCleanup (void)
 This is to be called on exit in those few threads that haven't been ported to MThread. More...
 
static void Cleanup (void)
 This will print out all the running threads, call exit(1) on each and then wait up to 5 seconds total for all the threads to exit. More...
 
static void GetAllThreadNames (QStringList &list)
 
static void GetAllRunningThreadNames (QStringList &list)
 
- Static Protected Member Functions inherited from MThread
static void setTerminationEnabled (bool enabled=true)
 
static void usleep (std::chrono::microseconds time)
 
template<typename R , typename P >
static std::enable_if_t< std::chrono::treat_as_floating_point< R >::value, void > usleep (std::chrono::duration< R, P > time)
 
- Protected Attributes inherited from MThread
MThreadInternalm_thread {nullptr}
 
QRunnable * m_runnable {nullptr}
 
bool m_prologExecuted {true}
 
bool m_epilogExecuted {true}
 

Detailed Description

template<class DBFS>
class ThumbThread< DBFS >

A generator worker thread.

Definition at line 87 of file imagethumbs.h.

Member Typedef Documentation

◆ ThumbQueue

template<class DBFS >
using ThumbThread< DBFS >::ThumbQueue = QMultiMap<int, TaskPtr>
private

A priority queue where 0 is highest priority.

Definition at line 111 of file imagethumbs.h.

Constructor & Destructor Documentation

◆ ThumbThread()

template<class DBFS >
ThumbThread< DBFS >::ThumbThread ( const QString &  name,
DBFS *const  dbfs 
)
inline

Constructor.

Parameters
nameThread name
dbfsFilesystem/Database adapter

Definition at line 95 of file imagethumbs.h.

◆ ~ThumbThread()

template<class DBFS >
ThumbThread< DBFS >::~ThumbThread
override

Destructor.

Definition at line 18 of file imagethumbs.cpp.

Member Function Documentation

◆ cancel()

template<class DBFS >
void ThumbThread< DBFS >::cancel

Clears all queues so that the thread will terminate.

Definition at line 29 of file imagethumbs.cpp.

◆ Enqueue()

template<class DBFS >
void ThumbThread< DBFS >::Enqueue ( const TaskPtr task)

Queues a Create request.

Parameters
taskThe request

Definition at line 43 of file imagethumbs.cpp.

◆ AbortDevice()

template<class DBFS >
void ThumbThread< DBFS >::AbortDevice ( int  devId,
const QString &  action 
)

Clears thumbnail request queue.

Warning
May block for several seconds

Definition at line 67 of file imagethumbs.cpp.

◆ PauseBackground()

template<class DBFS >
void ThumbThread< DBFS >::PauseBackground ( bool  pause)

Pauses or restarts processing of background tasks (scanner requests)

Definition at line 321 of file imagethumbs.cpp.

◆ run()

template<class DBFS >
void ThumbThread< DBFS >::run
overrideprotectedvirtual

Handles thumbnail requests by priority.

Repeatedly processes next request from highest priority queue until all queues are empty, then quits. For Create requests an event is broadcast once the thumbnail exists. Dirs are only deleted if empty

Reimplemented from MThread.

Definition at line 123 of file imagethumbs.cpp.

◆ CreateThumbnail()

template<class DBFS >
QString ThumbThread< DBFS >::CreateThumbnail ( ImagePtrK  im,
int  thumbPriority 
)
private

Generate thumbnail for an image.

Parameters
imImage
thumbPriority

Definition at line 238 of file imagethumbs.cpp.

◆ RemoveTasks()

template<class DBFS >
void ThumbThread< DBFS >::RemoveTasks ( ThumbQueue queue,
int  devId 
)
staticprivate

/brief Removes all tasks for a device from a task queue

Definition at line 101 of file imagethumbs.cpp.

Member Data Documentation

◆ m_dbfs

template<class DBFS >
DBFS& ThumbThread< DBFS >::m_dbfs
private

Database/filesystem adapter.

Definition at line 116 of file imagethumbs.h.

◆ m_taskDone

template<class DBFS >
QWaitCondition ThumbThread< DBFS >::m_taskDone
private

Definition at line 117 of file imagethumbs.h.

◆ m_requestQ

template<class DBFS >
ThumbQueue ThumbThread< DBFS >::m_requestQ
private

Synchronises completed tasks.

Priority queue of requests

Definition at line 119 of file imagethumbs.h.

◆ m_backgroundQ

template<class DBFS >
ThumbQueue ThumbThread< DBFS >::m_backgroundQ
private

Priority queue of background tasks.

Definition at line 120 of file imagethumbs.h.

◆ m_doBackground

template<class DBFS >
bool ThumbThread< DBFS >::m_doBackground {true}
private

Whether to process background tasks.

Definition at line 121 of file imagethumbs.h.

◆ m_mutex

template<class DBFS >
QMutex ThumbThread< DBFS >::m_mutex
private

Queue protection.

Definition at line 122 of file imagethumbs.h.


The documentation for this class was generated from the following files: