annotate data/model/RangeSummarisableTimeValueModel.cpp @ 299:576be0d0d218

* Merge transform directory from sv-match-alignment branch (the previous comment included notes for this stuff, but I missed it in the actual merge) * Fix crash when a transform fails to create an output model and the thread that created the transform then deletes its input model thinking it's no longer needed, even though the transform run thread is still using it -- fix is to wait() on the transform before returning the null output model
author Chris Cannam
date Fri, 28 Sep 2007 16:15:06 +0000
parents c022976d18e8
children 3ff8f571da09
rev   line source
Chris@297 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@297 2
Chris@297 3 /*
Chris@297 4 Sonic Visualiser
Chris@297 5 An audio file viewer and annotation editor.
Chris@297 6 Centre for Digital Music, Queen Mary, University of London.
Chris@297 7 This file copyright 2007 QMUL.
Chris@297 8
Chris@297 9 This program is free software; you can redistribute it and/or
Chris@297 10 modify it under the terms of the GNU General Public License as
Chris@297 11 published by the Free Software Foundation; either version 2 of the
Chris@297 12 License, or (at your option) any later version. See the file
Chris@297 13 COPYING included with this distribution for more information.
Chris@297 14 */
Chris@297 15
Chris@297 16 #include "RangeSummarisableTimeValueModel.h"
Chris@297 17
Chris@297 18 #include "AlignmentModel.h"
Chris@297 19
Chris@297 20 #include <iostream>
Chris@297 21
Chris@297 22 void
Chris@297 23 RangeSummarisableTimeValueModel::setAlignment(AlignmentModel *alignment)
Chris@297 24 {
Chris@297 25 delete m_alignment;
Chris@297 26 m_alignment = alignment;
Chris@297 27 connect(m_alignment, SIGNAL(completionChanged()),
Chris@297 28 this, SIGNAL(alignmentCompletionChanged()));
Chris@297 29 }
Chris@297 30
Chris@297 31 const Model *
Chris@297 32 RangeSummarisableTimeValueModel::getAlignmentReference() const
Chris@297 33 {
Chris@297 34 if (!m_alignment) return 0;
Chris@297 35 return m_alignment->getReferenceModel();
Chris@297 36 }
Chris@297 37
Chris@297 38 size_t
Chris@297 39 RangeSummarisableTimeValueModel::alignToReference(size_t frame) const
Chris@297 40 {
Chris@297 41 if (!m_alignment) return frame;
Chris@297 42 return m_alignment->toReference(frame);
Chris@297 43 }
Chris@297 44
Chris@297 45 size_t
Chris@297 46 RangeSummarisableTimeValueModel::alignFromReference(size_t refFrame) const
Chris@297 47 {
Chris@297 48 if (!m_alignment) return refFrame;
Chris@297 49 return m_alignment->fromReference(refFrame);
Chris@297 50 }
Chris@297 51
Chris@297 52 int
Chris@297 53 RangeSummarisableTimeValueModel::getAlignmentCompletion() const
Chris@297 54 {
Chris@297 55 std::cerr << "RangeSummarisableTimeValueModel::getAlignmentCompletion" << std::endl;
Chris@297 56 if (!m_alignment) return 100;
Chris@297 57 int completion = 0;
Chris@297 58 (void)m_alignment->isReady(&completion);
Chris@297 59 std::cerr << " -> " << completion << std::endl;
Chris@297 60 return completion;
Chris@297 61 }
Chris@297 62