annotate base/Thread.cpp @ 184:5a916fee6d2d

* Handle generator transforms (plugins whose channel count isn't dependent on number of audio inputs, as they have none) * Be less keen to suspend writing FFT data in spectrogram repaint -- only do it if we find we actually need to query the FFT data (i.e. we aren't repainting an area that hasn't been generated at all yet)
author Chris Cannam
date Tue, 10 Oct 2006 19:04:57 +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(&param, 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, &param)) {
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, &param)) {
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