# HG changeset patch # User Chris Cannam # Date 1444814338 -3600 # Node ID c82cae9a9e74724379e6027459efae20492d2256 # Parent dcd2afbc1bb707485ea1f3c0bfd453e2ca5d5a04# Parent d1c70c680fa920fe200304add821442a553683de Merge from branch "tony-2.0-integration" diff -r dcd2afbc1bb7 -r c82cae9a9e74 audio/AudioRecordTarget.cpp --- a/audio/AudioRecordTarget.cpp Wed Oct 14 10:17:32 2015 +0100 +++ b/audio/AudioRecordTarget.cpp Wed Oct 14 10:18:58 2015 +0100 @@ -168,12 +168,13 @@ return; } - m_model->setCompletion(100); + m_model->writeComplete(); m_model = 0; m_recording = false; } emit recordStatusChanged(false); + emit recordCompleted(); } diff -r dcd2afbc1bb7 -r c82cae9a9e74 audio/AudioRecordTarget.h --- a/audio/AudioRecordTarget.h Wed Oct 14 10:17:32 2015 +0100 +++ b/audio/AudioRecordTarget.h Wed Oct 14 10:18:58 2015 +0100 @@ -62,6 +62,7 @@ signals: void recordStatusChanged(bool recording); void recordDurationChanged(sv_frame_t, sv_samplerate_t); // emitted occasionally + void recordCompleted(); protected slots: void modelAboutToBeDeleted(); diff -r dcd2afbc1bb7 -r c82cae9a9e74 framework/MainWindowBase.cpp --- a/framework/MainWindowBase.cpp Wed Oct 14 10:17:32 2015 +0100 +++ b/framework/MainWindowBase.cpp Wed Oct 14 10:18:58 2015 +0100 @@ -2661,6 +2661,7 @@ QAction *action = qobject_cast(sender()); if (action) action->setChecked(false); } else { + if (m_audioIO) m_audioIO->resume(); playbackFrameChanged(m_viewManager->getPlaybackFrame()); m_playSource->play(m_viewManager->getPlaybackFrame()); } @@ -2701,6 +2702,15 @@ } } + QAction *action = qobject_cast(sender()); + + if (m_audioRecordMode == RecordReplaceSession) { + if (!checkSaveModified()) { + if (action) action->setChecked(false); + return; + } + } + m_audioIO->resume(); WritableWaveFileModel *model = m_recordTarget->startRecording(); if (!model) { @@ -2800,6 +2810,8 @@ updateMenuStates(); m_recentFiles.addFile(model->getLocation()); currentPaneChanged(m_paneStack->getCurrentPane()); + + emit audioFileLoaded(); } void @@ -3032,11 +3044,12 @@ { if (m_recordTarget->isRecording()) { m_recordTarget->stopRecording(); - emit audioFileLoaded(); } m_playSource->stop(); + if (m_audioIO) m_audioIO->suspend(); + if (m_paneStack && m_paneStack->getCurrentPane()) { updateVisibleRangeDisplay(m_paneStack->getCurrentPane()); } else {