From: <rel...@us...> - 2007-05-12 20:04:58
|
Revision: 183 http://svn.sourceforge.net/modplug/?rev=183&view=rev Author: relabsoluness Date: 2007-05-12 13:04:56 -0700 (Sat, 12 May 2007) Log Message: ----------- / <Relabs> VS Edit&Continue fix(gone broken in 'RC3'branch) / <Relabs> Pattern skipping behavior returned to that of .45 / <Relabs> Minor modifications(cleanup of channel state reset code, removed unused orderundo-vector.) Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_seq.cpp trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h trunk/OpenMPT/mptrack/Modedit.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/Sndfile.h Modified: trunk/OpenMPT/mptrack/Ctrl_seq.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2007-05-09 19:57:16 UTC (rev 182) +++ trunk/OpenMPT/mptrack/Ctrl_seq.cpp 2007-05-12 20:04:56 UTC (rev 183) @@ -207,7 +207,6 @@ pSndFile->m_nCurrentPattern = pSndFile->m_nNextPattern = m_nScrollPos; pMainFrm->ResetNotificationBuffer(); //rewbs.toCheck pSndFile->m_nNextRow = 0; - pSndFile->ResetChannelSettings(CHNRESET_BASIC); END_CRITICAL(); } else if (m_pParent->GetFollowSong()) @@ -217,13 +216,7 @@ pSndFile->m_nCurrentPattern = m_nScrollPos; pSndFile->SetCurrentOrder(m_nScrollPos); pSndFile->m_dwSongFlags |= dwPaused; - pSndFile->ResetChannelSettings(CHNRESET_BASIC); - - //if (!(dwPaused & SONG_PATTERNLOOP)) pSndFile->GetLength(TRUE); - //Relabs.note: Commented above line for it seems to cause - //significant slowdown when changing patterns without - //pattern-loop enabled. What is it's purpose anyway? - + if (!(dwPaused & SONG_PATTERNLOOP)) pSndFile->GetLength(TRUE); if (bIsPlaying) pMainFrm->ResetNotificationBuffer(); END_CRITICAL(); } Modified: trunk/OpenMPT/mptrack/Mainfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h 2007-05-09 19:57:16 UTC (rev 182) +++ trunk/OpenMPT/mptrack/Mainfrm.h 2007-05-12 20:04:56 UTC (rev 183) @@ -632,11 +632,8 @@ }; -//const CHAR gszBuildDate[] = __TIMESTAMP__; -const string buildDateTime = string(__DATE__) + string(" ") + string(__TIME__); +const CHAR gszBuildDate[] = __DATE__ " " __TIME__; - - ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2007-05-09 19:57:16 UTC (rev 182) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2007-05-12 20:04:56 UTC (rev 183) @@ -97,8 +97,6 @@ m_lpszLog = NULL; m_hWndFollow = NULL; memset(PatternUndo, 0, sizeof(PatternUndo)); - vector<BYTE> temp; temp.resize(MAX_UNDO_LEVEL, 0); - OrderUndo.resize(m_SndFile.Order.size(), temp); #ifdef _DEBUG MODCHANNEL *p = m_SndFile.Chn; if (((DWORD)p) & 7) Log("MODCHANNEL is not aligned (0x%08X)\n", p); @@ -2814,11 +2812,6 @@ BEGIN_CRITICAL(); - m_SndFile.SetCurrentPos(0); - //Relabs.note: Dirty hack to try to make replay pattern to be - //more like 'play song from start' - a little clean up for - //these playback calls would be nice (March 2007). - // Cut instruments/samples for (UINT i=0; i<MAX_CHANNELS; i++) { Modified: trunk/OpenMPT/mptrack/Moddoc.h =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h 2007-05-09 19:57:16 UTC (rev 182) +++ trunk/OpenMPT/mptrack/Moddoc.h 2007-05-12 20:04:56 UTC (rev 183) @@ -88,7 +88,6 @@ HWND m_hWndFollow; DWORD m_dwNotifyType; PATTERNUNDOBUFFER PatternUndo[MAX_UNDO_LEVEL]; - vector<vector<BYTE> > OrderUndo; // -> CODE#0015 // -> DESC="channels management dlg" Modified: trunk/OpenMPT/mptrack/Modedit.cpp =================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp 2007-05-09 19:57:16 UTC (rev 182) +++ trunk/OpenMPT/mptrack/Modedit.cpp 2007-05-12 20:04:56 UTC (rev 183) @@ -462,7 +462,7 @@ if (i >= nRemainingChannels) { m_SndFile.Chn[i].dwFlags |= CHN_MUTE; - m_SndFile.SetChannelSettingsToDefault(i); + m_SndFile.InitChannel(i); } } } Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2007-05-09 19:57:16 UTC (rev 182) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2007-05-12 20:04:56 UTC (rev 183) @@ -1568,7 +1568,7 @@ CDialog::OnInitDialog(); m_bmp.SubclassDlgItem(IDC_BITMAP1, this); m_bmp.LoadBitmap(MAKEINTRESOURCE(IDB_MPTRACK)); - wsprintf(s, "Build Date: %s", buildDateTime.c_str()); + wsprintf(s, "Build Date: %s", gszBuildDate); SetDlgItemText(IDC_EDIT2, s); SetDlgItemText(IDC_EDIT3, CString("Open Modplug Tracker, version ") + CMainFrame::GetFullVersionString()); Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2007-05-09 19:57:16 UTC (rev 182) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2007-05-12 20:04:56 UTC (rev 183) @@ -2419,7 +2419,7 @@ BeginWaitCursor(); //First adding channel as the last channel... if (pModDoc->ChangeNumChannels(pSndFile->m_nChannels+1)) { - pSndFile->SetChannelSettingsToDefault(pSndFile->m_nChannels-1); + pSndFile->InitChannel(pSndFile->m_nChannels-1); //...and then moving it to right position. pSndFile->MoveChannel(pSndFile->m_nChannels-1, nChn); @@ -2443,7 +2443,7 @@ BeginWaitCursor(); if (pModDoc->ChangeNumChannels(pSndFile->m_nChannels+1)) { - pSndFile->SetChannelSettingsToDefault(pSndFile->m_nChannels-1); + pSndFile->InitChannel(pSndFile->m_nChannels-1); pSndFile->MoveChannel(pSndFile->m_nChannels-1, nChn); pModDoc->SetModified(); Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2007-05-09 19:57:16 UTC (rev 182) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2007-05-12 20:04:56 UTC (rev 183) @@ -1039,10 +1039,10 @@ //--------------------------------------- { UINT i, nPattern; - BYTE resetMask = (!nPos) ? CHNRESET_TOTAL : CHNRESET_MOST; + BYTE resetMask = (!nPos) ? CHNRESET_SETPOS_FULL : CHNRESET_SETPOS_BASIC; for (i=0; i<MAX_CHANNELS; i++) - ResetChannelSettings(i, resetMask); + ResetChannelState(i, resetMask); if (!nPos) { @@ -1341,61 +1341,33 @@ } -bool CSoundFile::SetChannelSettingsToDefault(UINT nch) +bool CSoundFile::InitChannel(UINT nch) //------------------------------------- { - //This is used to set default setting to new channels, - //so that a new channel for example won't have some plug in when created - might not do all defaultings, - //though. - - if(nch > MAX_BASECHANNELS) return true; + if(nch >= MAX_BASECHANNELS) return true; - ResetChannelSettings(nch, CHNRESET_TOTAL); - ChnSettings[nch].nPan = 128; ChnSettings[nch].nVolume = 64; ChnSettings[nch].dwFlags = 0; ChnSettings[nch].nMixPlugin = 0; ChnSettings[nch].szName[0] = 0; - Chn[nch].dwFlags = ChnSettings[nch].dwFlags; - Chn[nch].nPan = ChnSettings[nch].nPan; - Chn[nch].nGlobalVol = ChnSettings[nch].nVolume; + ResetChannelState(nch, CHNRESET_TOTAL); m_pModDoc->Record1Channel(nch,FALSE); m_pModDoc->Record2Channel(nch,FALSE); m_bChannelMuteTogglePending[nch] = false; - return false; } -void CSoundFile::ResetChannelSettings(CHANNELINDEX i, BYTE resetMask) +void CSoundFile::ResetChannelState(CHANNELINDEX i, BYTE resetMask) //------------------------------------------------------- { - //Relabs.Hack if(i >= MAX_CHANNELS) return; - if(resetMask & CHNRESET_BASIC) + if(resetMask & 2) { - if(i < MAX_BASECHANNELS) - { - //Chn[i].dwFlags = ChnSettings[i].dwFlags; - Chn[i].nPan = ChnSettings[i].nPan; - Chn[i].nGlobalVol = ChnSettings[i].nVolume; - } - else - { - Chn[i].dwFlags = 0; - Chn[i].nPan = 128; - Chn[i].nGlobalVol = 64; - } - - } - if(resetMask == CHNRESET_BASIC) return; - - if(resetMask & CHNRESET_MOST) - { Chn[i].nNote = Chn[i].nNewNote = Chn[i].nNewIns = 0; Chn[i].pInstrument = NULL; Chn[i].pHeader = NULL; @@ -1407,9 +1379,8 @@ Chn[i].dwFlags |= CHN_KEYOFF|CHN_NOTEFADE; Chn[i].nTremorCount = 0; } - if(resetMask == CHNRESET_MOST) return; - if(resetMask & CHNRESET_TOTAL) + if(resetMask & 4) { Chn[i].nPeriod = 0; Chn[i].nPos = Chn[i].nLength = 0; @@ -1427,17 +1398,26 @@ Chn[i].nLeftRamp = Chn[i].nRightRamp = 0; Chn[i].nVolume = 256; } -} -void CSoundFile::ResetChannelSettings(BYTE resetMask) -//------------------------------------- -{ - for(CHANNELINDEX i = 0; i<GetNumChannels(); i++) - ResetChannelSettings(i, resetMask); + if(resetMask & 1) + { + if(i < MAX_BASECHANNELS) + { + Chn[i].dwFlags = ChnSettings[i].dwFlags; + Chn[i].nPan = ChnSettings[i].nPan; + Chn[i].nGlobalVol = ChnSettings[i].nVolume; + } + else + { + Chn[i].dwFlags = 0; + Chn[i].nPan = 128; + Chn[i].nGlobalVol = 64; + } + + } } - CHANNELINDEX CSoundFile::ReArrangeChannels(const std::vector<CHANNELINDEX>& newOrder) //------------------------------------------------------------------- { @@ -1515,7 +1495,7 @@ } else { - SetChannelSettingsToDefault(i); + InitChannel(i); } } Modified: trunk/OpenMPT/soundlib/Sndfile.h =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h 2007-05-09 19:57:16 UTC (rev 182) +++ trunk/OpenMPT/soundlib/Sndfile.h 2007-05-12 20:04:56 UTC (rev 183) @@ -604,9 +604,10 @@ //<---- } MODCHANNEL; -#define CHNRESET_BASIC 1 -#define CHNRESET_MOST 3 -#define CHNRESET_TOTAL 255 +#define CHNRESET_CHNSETTINGS 1 // 1 b +#define CHNRESET_SETPOS_BASIC 2 // 10 b +#define CHNRESET_SETPOS_FULL 7 //111 b +#define CHNRESET_TOTAL 255 //11111111b typedef struct _MODCHANNELSETTINGS @@ -1001,17 +1002,10 @@ BOOL GetPatternName(UINT nPat, LPSTR lpszName, UINT cbSize=MAX_PATTERNNAME) const; CHANNELINDEX ReArrangeChannels(const std::vector<CHANNELINDEX>& fromToArray); bool MoveChannel(UINT chn_from, UINT chn_to); - bool SetChannelSettingsToDefault(UINT nch); - - //Sets default channels settings from MODCHANNELSETTINGS to current - //channel settings. Flag can be used to tell whether to completely - //reset channels, not only a few settings(for maintaining old behavior). - void ResetChannelSettings(CHANNELINDEX chn, BYTE resetStyle); - //For all channels. - void ResetChannelSettings(BYTE resetStyle); + bool InitChannel(UINT nch); + void ResetChannelState(CHANNELINDEX chn, BYTE resetStyle); - // Module Loaders BOOL ReadXM(LPCBYTE lpStream, DWORD dwMemLength); BOOL ReadS3M(LPCBYTE lpStream, DWORD dwMemLength); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |