annotate base/Thread.h @ 392:183ee2a55fc7

* More work to abstract out interactive components used in the data library, so that it does not need to depend on QtGui.
author Chris Cannam
date Fri, 14 Mar 2008 17:14:21 +0000
parents 85bf384db35f
children 115f60df1e4d
rev   line source
Chris@109 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@109 2
Chris@109 3 /*
Chris@109 4 Sonic Visualiser
Chris@109 5 An audio file viewer and annotation editor.
Chris@109 6 Centre for Digital Music, Queen Mary, University of London.
Chris@109 7 This file copyright 2006 Chris Cannam.
Chris@109 8
Chris@109 9 This program is free software; you can redistribute it and/or
Chris@109 10 modify it under the terms of the GNU General Public License as
Chris@109 11 published by the Free Software Foundation; either version 2 of the
Chris@109 12 License, or (at your option) any later version. See the file
Chris@109 13 COPYING included with this distribution for more information.
Chris@109 14 */
Chris@109 15
Chris@109 16 #ifndef _THREAD_H_
Chris@109 17 #define _THREAD_H_
Chris@109 18
Chris@109 19 #include <QThread>
Chris@244 20 #include <QMutexLocker>
Chris@109 21
Chris@109 22 class Thread : public QThread
Chris@109 23 {
Chris@109 24 Q_OBJECT
Chris@109 25
Chris@109 26 public:
Chris@109 27 enum Type { RTThread, NonRTThread };
Chris@109 28
Chris@109 29 Thread(Type type = NonRTThread, QObject *parent = 0);
Chris@109 30
Chris@109 31 public slots:
Chris@109 32 void start();
Chris@109 33
Chris@392 34 protected:
Chris@392 35 virtual void run() = 0;
Chris@392 36
Chris@109 37 private:
Chris@109 38 Type m_type;
Chris@109 39 };
Chris@109 40
Chris@244 41
Chris@244 42 class MutexLocker
Chris@244 43 {
Chris@244 44 public:
Chris@244 45 MutexLocker(QMutex *mutex, const char *name);
Chris@244 46 ~MutexLocker();
Chris@244 47
Chris@244 48 private:
Chris@244 49 class Printer {
Chris@244 50 public:
Chris@244 51 Printer(const char *name);
Chris@244 52 ~Printer();
Chris@244 53
Chris@244 54 private:
Chris@244 55 const char *m_name;
Chris@244 56 };
Chris@244 57
Chris@244 58 Printer m_printer;
Chris@244 59 QMutexLocker m_locker;
Chris@244 60 };
Chris@244 61
Chris@109 62 #endif