From: <sag...@us...> - 2015-07-07 22:11:55
|
Revision: 5393 http://sourceforge.net/p/modplug/code/5393 Author: saga-games Date: 2015-07-07 22:11:49 +0000 (Tue, 07 Jul 2015) Log Message: ----------- [Fix] Apply current RPB setting when previewing tempo swing so that it actully plays at the right tempo. Modified Paths: -------------- trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp trunk/OpenMPT/mptrack/dlg_misc.cpp Modified: trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp =================================================================== --- trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp 2015-07-07 15:27:03 UTC (rev 5392) +++ trunk/OpenMPT/mptrack/PatternEditorDialogs.cpp 2015-07-07 22:11:49 UTC (rev 5393) @@ -570,12 +570,22 @@ void CPatternPropertiesDlg::OnTempoSwing() //---------------------------------------- { - m_tempoSwing.resize(GetDlgItemInt(IDC_ROWSPERBEAT), TempoSwing::Unity); + CPattern &pat = modDoc.GetrSoundFile().Patterns[m_nPattern]; + const ROWINDEX oldRPB = pat.GetRowsPerBeat(); + const ROWINDEX oldRPM = pat.GetRowsPerMeasure(); + + // Temporarily apply new tempo signature for preview + ROWINDEX newRPB = std::max(1u, GetDlgItemInt(IDC_ROWSPERBEAT)); + ROWINDEX newRPM = std::max(newRPB, GetDlgItemInt(IDC_ROWSPERMEASURE)); + pat.SetSignature(newRPB, newRPM); + + m_tempoSwing.resize(newRPB, TempoSwing::Unity); CTempoSwingDlg dlg(this, m_tempoSwing, modDoc.GetrSoundFile(), m_nPattern); if(dlg.DoModal() == IDOK) { m_tempoSwing = dlg.m_tempoSwing; } + pat.SetSignature(oldRPB, oldRPM); } Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp =================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp 2015-07-07 15:27:03 UTC (rev 5392) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp 2015-07-07 22:11:49 UTC (rev 5393) @@ -284,12 +284,26 @@ void CModTypeDlg::OnTempoSwing() //------------------------------ { + const ROWINDEX oldRPB = sndFile.m_nDefaultRowsPerBeat; + const ROWINDEX oldRPM = sndFile.m_nDefaultRowsPerMeasure; + const TempoMode oldMode = sndFile.m_nTempoMode; + + // Temporarily apply new tempo signature for preview + ROWINDEX newRPB = std::max(1u, GetDlgItemInt(IDC_ROWSPERBEAT)); + ROWINDEX newRPM = std::max(newRPB, GetDlgItemInt(IDC_ROWSPERMEASURE)); + sndFile.m_nDefaultRowsPerBeat = newRPM; + sndFile.m_nDefaultRowsPerMeasure = newRPM; + sndFile.m_nTempoMode = tempoModeModern; + m_tempoSwing.resize(GetDlgItemInt(IDC_ROWSPERBEAT), TempoSwing::Unity); CTempoSwingDlg dlg(this, m_tempoSwing, sndFile); if(dlg.DoModal() == IDOK) { m_tempoSwing = dlg.m_tempoSwing; } + sndFile.m_nDefaultRowsPerBeat = oldRPB; + sndFile.m_nDefaultRowsPerMeasure = oldRPM; + sndFile.m_nTempoMode = oldMode; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |