From: <sag...@us...> - 2013-03-18 23:30:20
|
Revision: 1600 http://sourceforge.net/p/modplug/code/1600 Author: saga-games Date: 2013-03-18 23:30:10 +0000 (Mon, 18 Mar 2013) Log Message: ----------- [Fix] Pattern Editor: Live edit pos is now based on playback notifications instead of internal processing position, which may well be in the future already. Modified Paths: -------------- trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mainbar.cpp trunk/OpenMPT/mptrack/Mainbar.h trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h trunk/OpenMPT/mptrack/View_tre.cpp trunk/OpenMPT/mptrack/View_tre.h Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2013-03-18 13:27:40 UTC (rev 1599) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2013-03-18 23:30:10 UTC (rev 1600) @@ -1042,6 +1042,7 @@ p->nOrder = m_pSndFile->m_nCurrentOrder; p->nRow = m_pSndFile->m_nRow; p->nPattern = m_pSndFile->m_nPattern; + p->nTick = m_pSndFile->m_nTickCount; if (m_dwNotifyType & MPTNOTIFY_SAMPLE) { SAMPLEINDEX nSmp = m_dwNotifyType & 0xFFFF; @@ -1056,8 +1057,7 @@ p->dwPos[k] = MPTNOTIFY_POSVALID | (DWORD)(pChn->nPos); } } - } else - if (m_dwNotifyType & (MPTNOTIFY_VOLENV|MPTNOTIFY_PANENV|MPTNOTIFY_PITCHENV)) + } else if (m_dwNotifyType & (MPTNOTIFY_VOLENV|MPTNOTIFY_PANENV|MPTNOTIFY_PITCHENV)) { UINT nIns = m_dwNotifyType & 0xFFFF; for (CHANNELINDEX k = 0; k < MAX_CHANNELS; k++) @@ -1079,9 +1079,9 @@ if(chnEnv.flags[ENV_ENABLED]) { uint32 pos = chnEnv.nEnvPosition; - if(m_pSndFile->IsCompatibleMode(TRK_IMPULSETRACKER | TRK_FASTTRACKER2)) + if(m_pSndFile->IsCompatibleMode(TRK_IMPULSETRACKER)) { - // Impulse Tracker / Fasttracker 2 envelope handling (see SndMix.cpp for details) + // Impulse Tracker envelope handling (see e.g. CSoundFile::IncrementEnvelopePosition in SndMix.cpp for details) if(pos > 0) pos--; else @@ -1091,8 +1091,7 @@ } } } - } else - if (m_dwNotifyType & (MPTNOTIFY_VUMETERS)) + } else if (m_dwNotifyType & (MPTNOTIFY_VUMETERS)) { for (UINT k=0; k<MAX_CHANNELS; k++) { @@ -1101,8 +1100,7 @@ UINT vur = pChn->nRightVU; p->dwPos[k] = (vul << 8) | (vur); } - } else - if (m_dwNotifyType & MPTNOTIFY_MASTERVU) + } else if (m_dwNotifyType & MPTNOTIFY_MASTERVU) { DWORD lVu = (gnLVuMeter >> 11); DWORD rVu = (gnRVuMeter >> 11); Modified: trunk/OpenMPT/mptrack/Mainbar.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mainbar.cpp 2013-03-18 13:27:40 UTC (rev 1599) +++ trunk/OpenMPT/mptrack/Mainbar.cpp 2013-03-18 23:30:10 UTC (rev 1600) @@ -937,7 +937,7 @@ } -VOID CModTreeBar::UpdatePlayPos(CModDoc *pModDoc, PMPTNOTIFICATION pNotify) +VOID CModTreeBar::UpdatePlayPos(CModDoc *pModDoc, MPTNOTIFICATION *pNotify) //------------------------------------------------------------------------- { if (m_pModTree) m_pModTree->UpdatePlayPos(pModDoc, pNotify); Modified: trunk/OpenMPT/mptrack/Mainbar.h =================================================================== --- trunk/OpenMPT/mptrack/Mainbar.h 2013-03-18 13:27:40 UTC (rev 1599) +++ trunk/OpenMPT/mptrack/Mainbar.h 2013-03-18 23:30:10 UTC (rev 1600) @@ -116,7 +116,7 @@ VOID OnDocumentCreated(CModDoc *pModDoc); VOID OnDocumentClosed(CModDoc *pModDoc); VOID OnUpdate(CModDoc *pModDoc, DWORD lHint=0, CObject *pHint=NULL); - VOID UpdatePlayPos(CModDoc *pModDoc, PMPTNOTIFICATION pNotify); + VOID UpdatePlayPos(CModDoc *pModDoc, MPTNOTIFICATION *pNotify); HWND GetModTreeHWND(); //rewbs.customKeys BOOL PostMessageToModTree(UINT cmdID, WPARAM wParam, LPARAM lParam); //rewbs.customKeys Modified: trunk/OpenMPT/mptrack/Mainfrm.h =================================================================== --- trunk/OpenMPT/mptrack/Mainfrm.h 2013-03-18 13:27:40 UTC (rev 1599) +++ trunk/OpenMPT/mptrack/Mainfrm.h 2013-03-18 23:30:10 UTC (rev 1600) @@ -273,15 +273,16 @@ #define MPTNOTIFY_STOP 0x00800000 #define MPTNOTIFY_POSVALID 0x80000000 // dwPos[i] is valid -typedef struct MPTNOTIFICATION +struct MPTNOTIFICATION { DWORD dwType; DWORD dwLatency; - ORDERINDEX nOrder; // Always valid + ROWINDEX nRow; // Always valid + UINT nTick; // dito + ORDERINDEX nOrder; // dito PATTERNINDEX nPattern; // dito - ROWINDEX nRow; // dito DWORD dwPos[MAX_CHANNELS]; // sample/envelope pos for each channel if >= 0 -} MPTNOTIFICATION, *PMPTNOTIFICATION; +}; ///////////////////////////////////////////////////////////////////////// Modified: trunk/OpenMPT/mptrack/View_pat.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp 2013-03-18 13:27:40 UTC (rev 1599) +++ trunk/OpenMPT/mptrack/View_pat.cpp 2013-03-18 23:30:10 UTC (rev 1600) @@ -170,6 +170,7 @@ memset(activeNoteChannel, 0xFF, sizeof(activeNoteChannel)); m_nPlayPat = PATTERNINDEX_INVALID; m_nPlayRow = 0; + m_nPlayTick = 0; m_nMidRow = 0; m_nDragItem = 0; m_bInItemRect = false; @@ -1871,6 +1872,7 @@ DeleteRows(0, pSndFile->GetNumChannels() - 1, m_Selection.GetNumRows()); } + void CViewPattern::InsertRows(CHANNELINDEX colmin, CHANNELINDEX colmax) //--------------------------------------------------------------------- { @@ -1908,13 +1910,11 @@ } -//rewbs.customKeys void CViewPattern::OnInsertRows() //------------------------------- { InsertRows(m_Selection.GetStartChannel(), m_Selection.GetEndChannel()); } -//end rewbs.customKeys void CViewPattern::OnEditFind() @@ -3551,7 +3551,6 @@ SetCurrentRow((nRow < pSndFile->Patterns[nPat].GetNumRows()) ? nRow : 0, FALSE, FALSE); } } - SetPlayCursor(PATTERNINDEX_INVALID, 0); } else { if(updateOrderList) @@ -3559,11 +3558,10 @@ SendCtrlMessage(CTRLMSG_FORCEREFRESH); //force orderlist refresh updateOrderList = false; } - SetPlayCursor(nPat, nRow); } + SetPlayCursor(nPat, nRow); + m_nPlayTick = pnotify->nTick; - - } //Ends condition "if(pnotify->dwType & MPTNOTIFY_POSITION)" if((pnotify->dwType & (MPTNOTIFY_VUMETERS|MPTNOTIFY_STOP)) && m_Status[psShowVUMeters]) @@ -3675,7 +3673,10 @@ ModCommandPos editpos; if(bLiveRecord) { - SetEditPos(rSf, editpos.row, editpos.pattern, rSf.m_nRow, rSf.m_nPattern); + if(m_nPlayPat != PATTERNINDEX_INVALID) + SetEditPos(rSf, editpos.row, editpos.pattern, m_nPlayRow, m_nPlayPat); + else + SetEditPos(rSf, editpos.row, editpos.pattern, rSf.m_nRow, rSf.m_nPattern); } else { editpos.pattern = m_nPattern; @@ -4694,21 +4695,20 @@ //----------------------------------------------------------------------------- { CModDoc *pModDoc = GetDocument(); - CSoundFile *pSndFile = pModDoc->GetSoundFile(); CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); + if(pModDoc == nullptr || pMainFrm == nullptr) + { + return; + } + CSoundFile &sndFile = pModDoc->GetrSoundFile(); - // Get playback edit positions from play engine here in case they are needed below. - const ROWINDEX nRowPlayback = pSndFile->m_nRow; - const UINT nTick = pSndFile->m_nTickCount; - const PATTERNINDEX nPatPlayback = pSndFile->m_nPattern; - const bool liveRecord = IsLiveRecord(); const bool isSplit = IsNoteSplit(note); UINT ins = 0; BYTE *activeNoteMap = isSplit ? splitActiveNoteChannel : activeNoteChannel; const CHANNELINDEX nChnCursor = GetCurrentChannel(); - const CHANNELINDEX nChn = bChordMode ? chordPatternChannels[0] : (activeNoteMap[note] < pSndFile->GetNumChannels() ? activeNoteMap[note] : nChnCursor); + const CHANNELINDEX nChn = bChordMode ? chordPatternChannels[0] : (activeNoteMap[note] < sndFile.GetNumChannels() ? activeNoteMap[note] : nChnCursor); CHANNELINDEX noteChannels[MPTChord::notesPerChord] = { nChn }; int numNotes = 1; @@ -4727,7 +4727,7 @@ if(!ins) ins = m_nFoundInstrument; - const bool playWholeRow = ((TrackerSettings::Instance().m_dwPatternSetup & PATTERN_PLAYEDITROW) && !liveRecord && IsLiveRecord()); + const bool playWholeRow = ((TrackerSettings::Instance().m_dwPatternSetup & PATTERN_PLAYEDITROW) && !liveRecord); if(bChordMode == true) { m_Status.reset(psChordPlaying); @@ -4746,7 +4746,7 @@ prevChordNote = NOTE_NONE; } else { - pModDoc->NoteOff(note, ((TrackerSettings::Instance().m_dwPatternSetup & PATTERN_NOTEFADE) || pSndFile->GetNumInstruments() == 0), ins, nChnCursor, playWholeRow ? nChn : CHANNELINDEX_INVALID); + pModDoc->NoteOff(note, ((TrackerSettings::Instance().m_dwPatternSetup & PATTERN_NOTEFADE) || sndFile.GetNumInstruments() == 0), ins, nChnCursor, playWholeRow ? nChn : CHANNELINDEX_INVALID); } } @@ -4770,28 +4770,24 @@ const bool usePlaybackPosition = (!bChordMode) && (liveRecord && (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_AUTODELAY)); //Work out where to put the note off - ROWINDEX nRow = GetCurrentRow(); - PATTERNINDEX nPat = m_nPattern; + ModCommandPos editPos = GetEditPos(sndFile, usePlaybackPosition); - if(usePlaybackPosition) - SetEditPos(*pSndFile, nRow, nPat, nRowPlayback, nPatPlayback); - const bool doQuantize = (liveRecord || (fromMidi && (TrackerSettings::Instance().m_dwMidiSetup & MIDISETUP_PLAYPATTERNONMIDIIN))) && TrackerSettings::Instance().recordQuantizeRows != 0; if(doQuantize) { - QuantizeRow(nPat, nRow); + QuantizeRow(editPos.pattern, editPos.row); } - ModCommand *pTarget = pSndFile->Patterns[nPat].GetpModCommand(nRow, nChn); + ModCommand *pTarget = sndFile.Patterns[editPos.pattern].GetpModCommand(editPos.row, nChn); // Don't overwrite: if(pTarget->note != NOTE_NONE || pTarget->instr || pTarget->volcmd != VOLCMD_NONE) { // If there's a note in the current location and the song is playing and following, // the user probably just tapped the key - let's try the next row down. - nRow++; - if(pTarget->note == note && liveRecord && pSndFile->Patterns[nPat].IsValidRow(nRow)) + editPos.row++; + if(pTarget->note == note && liveRecord && sndFile.Patterns[editPos.pattern].IsValidRow(editPos.row)) { - pTarget = pSndFile->Patterns[nPat].GetpModCommand(nRow, nChn); + pTarget = sndFile.Patterns[editPos.pattern].GetpModCommand(editPos.row, nChn); if(pTarget->note != NOTE_NONE || (!bChordMode && (pTarget->instr || pTarget->volcmd))) return; } else @@ -4801,36 +4797,36 @@ } // Create undo-point. - pModDoc->GetPatternUndo().PrepareUndo(nPat, nChn, nRow, noteChannels[numNotes - 1] - nChn + 1, 1); + pModDoc->GetPatternUndo().PrepareUndo(editPos.pattern, nChn, editPos.row, noteChannels[numNotes - 1] - nChn + 1, 1); for(int i = 0; i < numNotes; i++) { - ModCommand *pTarget = pSndFile->Patterns[nPat].GetpModCommand(nRow, noteChannels[i]); + ModCommand *pTarget = sndFile.Patterns[editPos.pattern].GetpModCommand(editPos.row, noteChannels[i]); // -- write sdx if playing live - if(usePlaybackPosition && nTick && pTarget->command == CMD_NONE && !doQuantize) + if(usePlaybackPosition && m_nPlayTick && pTarget->command == CMD_NONE && !doQuantize) { - pTarget->command = (pSndFile->TypeIsS3M_IT_MPT()) ? CMD_S3MCMDEX : CMD_MODCMDEX; - pTarget->param = 0xD0 | min(0xF, nTick); + pTarget->command = (sndFile.TypeIsS3M_IT_MPT()) ? CMD_S3MCMDEX : CMD_MODCMDEX; + pTarget->param = 0xD0 | min(0xF, m_nPlayTick); } //Enter note off - if(pSndFile->GetModSpecifications().hasNoteOff && (pSndFile->GetNumInstruments() > 0 || !pSndFile->GetModSpecifications().hasNoteCut)) + if(sndFile.GetModSpecifications().hasNoteOff && (sndFile.GetNumInstruments() > 0 || !sndFile.GetModSpecifications().hasNoteCut)) { // === // Not used in sample (if module format supports ^^^ instead) pTarget->note = NOTE_KEYOFF; - } else if(pSndFile->GetModSpecifications().hasNoteCut) + } else if(sndFile.GetModSpecifications().hasNoteCut) { // ^^^ pTarget->note = NOTE_NOTECUT; } else { // we don't have anything to cut (MOD format) - use volume or ECx - if(usePlaybackPosition && nTick && !doQuantize) // ECx + if(usePlaybackPosition && m_nPlayTick && !doQuantize) // ECx { - pTarget->command = (pSndFile->TypeIsS3M_IT_MPT()) ? CMD_S3MCMDEX : CMD_MODCMDEX; - pTarget->param = 0xC0 | min(0xF, nTick); + pTarget->command = (sndFile.TypeIsS3M_IT_MPT()) ? CMD_S3MCMDEX : CMD_MODCMDEX; + pTarget->param = 0xC0 | min(0xF, m_nPlayTick); } else // C00 { pTarget->note = NOTE_NONE; @@ -4845,9 +4841,9 @@ pModDoc->SetModified(); - if(nPat == m_nPattern) + if(editPos.pattern == m_nPattern) { - InvalidateRow(nRow); + InvalidateRow(editPos.row); } else { InvalidatePattern(); @@ -4964,14 +4960,6 @@ } CSoundFile &sndFile = pModDoc->GetrSoundFile(); - ROWINDEX nRow = GetCurrentRow(); - const ROWINDEX nRowPlayback = sndFile.m_nRow; - const UINT nTick = sndFile.m_nTickCount; - const PATTERNINDEX nPatPlayback = sndFile.m_nPattern; - - const bool recordEnabled = IsEditingEnabled(); - CHANNELINDEX nChn = GetCurrentChannel(); - if(note < NOTE_MIN_SPECIAL) { Limit(note, sndFile.GetModSpecifications().noteMin, sndFile.GetModSpecifications().noteMax); @@ -4990,11 +4978,17 @@ return; } - BYTE recordGroup = pModDoc->IsChannelRecord(nChn); const bool liveRecord = IsLiveRecord(); const bool usePlaybackPosition = (liveRecord && (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_AUTODELAY) && !sndFile.m_SongFlags[SONG_STEP]); const bool isSplit = IsNoteSplit(note); + ModCommandPos editPos = GetEditPos(sndFile, usePlaybackPosition); + + const bool recordEnabled = IsEditingEnabled(); + CHANNELINDEX nChn = GetCurrentChannel(); + + BYTE recordGroup = pModDoc->IsChannelRecord(nChn); + if(pModDoc->GetSplitKeyboardSettings().IsSplitActive() && ((recordGroup == 1 && isSplit) || (recordGroup == 2 && !isSplit))) { @@ -5015,32 +5009,28 @@ if (m_nSpacing > 0 && m_nSpacing <= MAX_SPACING) { if ((timeGetTime() - m_dwLastNoteEntryTime < TrackerSettings::Instance().gnAutoChordWaitTime) - && (nRow >= m_nSpacing) && (!m_bLastNoteEntryBlocked)) + && (editPos.row >= m_nSpacing) && (!m_bLastNoteEntryBlocked)) { - nRow -= m_nSpacing; + editPos.row -= m_nSpacing; } } } m_dwLastNoteEntryTime = timeGetTime(); - PATTERNINDEX nPat = m_nPattern; - if(usePlaybackPosition) - SetEditPos(sndFile, nRow, nPat, nRowPlayback, nPatPlayback); - // Quantize const bool doQuantize = (liveRecord || (fromMidi && (TrackerSettings::Instance().m_dwMidiSetup & MIDISETUP_PLAYPATTERNONMIDIIN))) && TrackerSettings::Instance().recordQuantizeRows != 0; if(doQuantize) { - QuantizeRow(nPat, nRow); + QuantizeRow(editPos.pattern, editPos.row); // "Grace notes" are stuffed into the next row, if possible - if(sndFile.Patterns[nPat].GetpModCommand(nRow, nChn)->IsNote() && nRow < sndFile.Patterns[nPat].GetNumRows() - 1) + if(sndFile.Patterns[editPos.pattern].GetpModCommand(editPos.row, nChn)->IsNote() && editPos.row < sndFile.Patterns[editPos.pattern].GetNumRows() - 1) { - nRow++; + editPos.row++; } } // -- Work out where to put the new note - ModCommand *pTarget = sndFile.Patterns[nPat].GetpModCommand(nRow, nChn); + ModCommand *pTarget = sndFile.Patterns[editPos.pattern].GetpModCommand(editPos.row, nChn); ModCommand newcmd = *pTarget; // Param control 'note' @@ -5103,14 +5093,14 @@ } // -- write sdx if playing live - if(usePlaybackPosition && nTick && !doQuantize) // avoid SD0 which will be mis-interpreted + if(usePlaybackPosition && m_nPlayTick && !doQuantize) // avoid SD0 which will be mis-interpreted { if(newcmd.command == CMD_NONE) //make sure we don't overwrite any existing commands. { newcmd.command = (sndFile.TypeIsS3M_IT_MPT()) ? CMD_S3MCMDEX : CMD_MODCMDEX; UINT maxSpeed = 0x0F; if(sndFile.m_nMusicSpeed > 0) maxSpeed = min(0x0F, sndFile.m_nMusicSpeed - 1); - newcmd.param = 0xD0 + min(maxSpeed, nTick); + newcmd.param = 0xD0 + min(maxSpeed, m_nPlayTick); } } @@ -5124,7 +5114,7 @@ const bool modified = (recordEnabled && *pTarget != newcmd); if (modified) { - pModDoc->GetPatternUndo().PrepareUndo(nPat, nChn, nRow, 1, 1); + pModDoc->GetPatternUndo().PrepareUndo(editPos.pattern, nChn, editPos.row, 1, 1); *pTarget = newcmd; } @@ -5135,7 +5125,7 @@ if (playWholeRow) { // play the whole row in "step mode" - PatternStep(nRow); + PatternStep(editPos.row); } if (!playWholeRow || !recordEnabled) { @@ -5149,7 +5139,7 @@ { // ...or one that can be found on a previous row of this pattern. ModCommand *search = pTarget; - ROWINDEX srow = nRow; + ROWINDEX srow = editPos.row; while(srow-- > 0) { search -= sndFile.GetNumChannels(); @@ -5169,7 +5159,7 @@ // -- if recording, handle post note entry behaviour (move cursor etc..) if(recordEnabled) { - PatternCursor sel(nRow, nChn, m_Cursor.GetColumnType()); + PatternCursor sel(editPos.row, nChn, m_Cursor.GetColumnType()); if(!liveRecord) { // Update only when not recording live. @@ -5179,7 +5169,7 @@ if(modified) // Has it really changed? { pModDoc->SetModified(); - if(nPat == m_nPattern) + if(editPos.pattern == m_nPattern) InvalidateCell(sel); else InvalidatePattern(); @@ -5195,9 +5185,9 @@ { if((m_nSpacing > 0) && (m_nSpacing <= MAX_SPACING)) { - if(nRow + m_nSpacing < sndFile.Patterns[nPat].GetNumRows() || (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_CONTSCROLL)) + if(editPos.row + m_nSpacing < sndFile.Patterns[editPos.pattern].GetNumRows() || (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_CONTSCROLL)) { - SetCurrentRow(nRow + m_nSpacing, (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_CONTSCROLL) ? true: false); + SetCurrentRow(editPos.row + m_nSpacing, (TrackerSettings::Instance().m_dwPatternSetup & PATTERN_CONTSCROLL) ? true: false); m_bLastNoteEntryBlocked = false; } else { @@ -5538,7 +5528,7 @@ return; } - const ROWINDEX currentTick = sndFile->m_nMusicSpeed * row + sndFile->m_nTickCount; + const ROWINDEX currentTick = sndFile->m_nMusicSpeed * row + m_nPlayTick; const ROWINDEX ticksPerNote = TrackerSettings::Instance().recordQuantizeRows * sndFile->m_nMusicSpeed; // Previous quantization step Modified: trunk/OpenMPT/mptrack/View_pat.h =================================================================== --- trunk/OpenMPT/mptrack/View_pat.h 2013-03-18 13:27:40 UTC (rev 1599) +++ trunk/OpenMPT/mptrack/View_pat.h 2013-03-18 23:30:10 UTC (rev 1600) @@ -162,6 +162,7 @@ UINT m_nMidRow, m_nSpacing, m_nAccelChar, m_nLastPlayedRow, m_nLastPlayedOrder; FlagSet<PatternStatus> m_Status; ROWINDEX m_nPlayRow; + UINT m_nPlayTick; PATTERNINDEX m_nPattern, m_nPlayPat; int m_nXScroll, m_nYScroll; @@ -192,16 +193,16 @@ vector<ModCommand::NOTE> octaveKeyMemory; - WORD ChnVUMeters[MAX_BASECHANNELS]; - WORD OldVUMeters[MAX_BASECHANNELS]; - // Chord preview CHANNELINDEX chordPatternChannels[MPTChord::notesPerChord]; ModCommand::NOTE prevChordNote, prevChordBaseNote; - BYTE activeNoteChannel[NOTE_MAX + 1]; - BYTE splitActiveNoteChannel[NOTE_MAX + 1]; + WORD ChnVUMeters[MAX_BASECHANNELS]; + WORD OldVUMeters[MAX_BASECHANNELS]; + BYTE activeNoteChannel[NOTE_MAX + NOTE_MIN]; + BYTE splitActiveNoteChannel[NOTE_MAX + NOTE_MIN]; + public: CEffectVis *m_pEffectVis; //rewbs.fxVis Modified: trunk/OpenMPT/mptrack/View_tre.cpp =================================================================== --- trunk/OpenMPT/mptrack/View_tre.cpp 2013-03-18 13:27:40 UTC (rev 1599) +++ trunk/OpenMPT/mptrack/View_tre.cpp 2013-03-18 23:30:10 UTC (rev 1600) @@ -2200,7 +2200,7 @@ } -void CModTree::UpdatePlayPos(CModDoc *pModDoc, PMPTNOTIFICATION pNotify) +void CModTree::UpdatePlayPos(CModDoc *pModDoc, MPTNOTIFICATION *pNotify) //---------------------------------------------------------------------- { ModTreeDocInfo *pInfo = GetDocumentInfoFromModDoc(pModDoc); Modified: trunk/OpenMPT/mptrack/View_tre.h =================================================================== --- trunk/OpenMPT/mptrack/View_tre.h 2013-03-18 13:27:40 UTC (rev 1599) +++ trunk/OpenMPT/mptrack/View_tre.h 2013-03-18 23:30:10 UTC (rev 1600) @@ -162,7 +162,7 @@ void UpdateView(ModTreeDocInfo *pInfo, DWORD dwHint); void OnUpdate(CModDoc *pModDoc, DWORD dwHint, CObject *pHint); bool CanDrop(HTREEITEM hItem, bool bDoDrop); - void UpdatePlayPos(CModDoc *pModDoc, PMPTNOTIFICATION pNotify); + void UpdatePlayPos(CModDoc *pModDoc, MPTNOTIFICATION *pNotify); bool IsItemExpanded(HTREEITEM hItem); // Overrides This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |