From 9804cb7db84da2c195217d2d194164d54cfd25ad Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Thu, 11 Jun 2009 15:17:25 +0200 Subject: [PATCH] ResourcePreviewer: save and restore default settings of InstrumentTrack After instantiation of InstrumentTrack save its settings so we can restore it each time before previewing resources. Otherwise preview of incomplete presets or just samples could be distorted by settings of previosly loaded preset. Signed-off-by: Tobias Doerffel --- include/ResourcePreviewer.h | 3 +++ src/core/ResourcePreviewer.cpp | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/ResourcePreviewer.h b/include/ResourcePreviewer.h index 242ee37ef..453e98695 100644 --- a/include/ResourcePreviewer.h +++ b/include/ResourcePreviewer.h @@ -27,6 +27,7 @@ #define _RESOURCE_PREVIEWER_H #include "track_container.h" +#include "mmp.h" class Piano; class ResourceItem; @@ -57,6 +58,8 @@ private: PreviewTrackContainer m_previewTrackContainer; instrumentTrack * m_previewTrack; + multimediaProject m_defaultSettings; + } ; diff --git a/src/core/ResourcePreviewer.cpp b/src/core/ResourcePreviewer.cpp index b9e6c1f22..0857558e3 100644 --- a/src/core/ResourcePreviewer.cpp +++ b/src/core/ResourcePreviewer.cpp @@ -37,7 +37,8 @@ ResourcePreviewer::ResourcePreviewer() : m_previewTrackContainer(), - m_previewTrack( NULL ) + m_previewTrack( NULL ), + m_defaultSettings( multimediaProject::InstrumentTrackSettings ) { // do not clutter global journal with items due to changing settings // in preview classes @@ -45,10 +46,14 @@ ResourcePreviewer::ResourcePreviewer() : m_previewTrack = dynamic_cast( track::create( track::InstrumentTrack, &m_previewTrackContainer ) ); + + // save default settings so we can restore them later + m_previewTrack->saveSettings( m_defaultSettings, + m_defaultSettings.content() ); + // make sure a default instrument is loaded m_previewTrack->loadInstrument( "tripleoscillator" ); m_previewTrack->setJournalling( false ); - } @@ -72,6 +77,12 @@ void ResourcePreviewer::preview( ResourceItem * _item ) engine::getProjectJournal()->setJournalling( false ); engine::setSuppressMessages( true ); + // restore default settings, in case we're going to load an incomplete + // preset or are going to preview a sample (which should be played at + // a default instrument track) + m_previewTrack->loadTrackSpecificSettings( + m_defaultSettings.content().firstChild().toElement() ); + switch( _item->type() ) { case ResourceItem::TypePreset: