annotate base/Thread.cpp @ 179:0ed2b2e26b44
 
* Tidy up inheritance hierarchy of model classes -- remove ZoomConstraint as
  a base class (make it a member instead) and remove virtual inheritances of
  QObject (no longer necessary).
 | author | Chris Cannam | 
 | date | Thu, 05 Oct 2006 11:03:06 +0000 | 
 | parents | 61a2ac1241b3 | 
 | children | 85bf384db35f | 
 | 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 #include "Thread.h" | 
| Chris@109 | 17 | 
| Chris@109 | 18 #ifndef _WIN32 | 
| Chris@109 | 19 #include <pthread.h> | 
| Chris@109 | 20 #endif | 
| Chris@109 | 21 | 
| Chris@109 | 22 Thread::Thread(Type type, QObject *parent) : | 
| Chris@109 | 23     QThread(parent), | 
| Chris@109 | 24     m_type(type) | 
| Chris@109 | 25 { | 
| Chris@109 | 26     setStackSize(512 * 1024); | 
| Chris@109 | 27 } | 
| Chris@109 | 28 | 
| Chris@109 | 29 void | 
| Chris@109 | 30 Thread::start() | 
| Chris@109 | 31 { | 
| Chris@109 | 32     QThread::start(); | 
| Chris@109 | 33 | 
| Chris@109 | 34 #ifndef _WIN32 | 
| Chris@109 | 35     struct sched_param param; | 
| Chris@109 | 36     ::memset(¶m, 0, sizeof(param)); | 
| Chris@109 | 37 | 
| Chris@109 | 38     if (m_type == RTThread) { | 
| Chris@109 | 39 | 
| Chris@109 | 40         param.sched_priority = 5; | 
| Chris@109 | 41 | 
| Chris@109 | 42         if (::pthread_setschedparam(pthread_self(), SCHED_FIFO, ¶m)) { | 
| Chris@109 | 43             ::perror("INFO: pthread_setschedparam to SCHED_FIFO failed"); | 
| Chris@109 | 44         } | 
| Chris@109 | 45 | 
| Chris@109 | 46     } else { | 
| Chris@109 | 47 | 
| Chris@109 | 48         if (::pthread_setschedparam(pthread_self(), SCHED_OTHER, ¶m)) { | 
| Chris@109 | 49             ::perror("WARNING: pthread_setschedparam to SCHED_OTHER failed"); | 
| Chris@109 | 50         } | 
| Chris@109 | 51     } | 
| Chris@109 | 52 | 
| Chris@109 | 53 #endif | 
| Chris@109 | 54 } | 
| Chris@109 | 55 |