You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(10) |
Sep
|
Oct
|
Nov
|
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(1) |
Feb
(2) |
Mar
(3) |
Apr
(2) |
May
(10) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(3) |
Dec
|
2008 |
Jan
(6) |
Feb
(4) |
Mar
(5) |
Apr
(2) |
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(6) |
Sep
(2) |
Oct
(9) |
Nov
(1) |
Dec
(4) |
2009 |
Jan
(9) |
Feb
(2) |
Mar
(2) |
Apr
(2) |
May
(6) |
Jun
(18) |
Jul
(33) |
Aug
(39) |
Sep
(33) |
Oct
(24) |
Nov
(23) |
Dec
(22) |
2010 |
Jan
(29) |
Feb
(32) |
Mar
(51) |
Apr
(17) |
May
(31) |
Jun
(21) |
Jul
(32) |
Aug
(28) |
Sep
(35) |
Oct
(27) |
Nov
(11) |
Dec
(13) |
2011 |
Jan
(14) |
Feb
(13) |
Mar
(27) |
Apr
(27) |
May
(28) |
Jun
(20) |
Jul
(43) |
Aug
(52) |
Sep
(66) |
Oct
(61) |
Nov
(11) |
Dec
(8) |
2012 |
Jan
(20) |
Feb
(30) |
Mar
(38) |
Apr
(21) |
May
(33) |
Jun
(21) |
Jul
(25) |
Aug
(9) |
Sep
(24) |
Oct
(42) |
Nov
(27) |
Dec
(41) |
2013 |
Jan
(20) |
Feb
(35) |
Mar
(156) |
Apr
(298) |
May
(258) |
Jun
(201) |
Jul
(105) |
Aug
(60) |
Sep
(193) |
Oct
(245) |
Nov
(280) |
Dec
(194) |
2014 |
Jan
(63) |
Feb
(202) |
Mar
(200) |
Apr
(23) |
May
(53) |
Jun
(105) |
Jul
(18) |
Aug
(26) |
Sep
(110) |
Oct
(187) |
Nov
(97) |
Dec
(74) |
2015 |
Jan
(45) |
Feb
(55) |
Mar
(116) |
Apr
(116) |
May
(193) |
Jun
(164) |
Jul
(50) |
Aug
(111) |
Sep
(98) |
Oct
(71) |
Nov
(103) |
Dec
(63) |
2016 |
Jan
(33) |
Feb
(101) |
Mar
(182) |
Apr
(139) |
May
(140) |
Jun
(103) |
Jul
(165) |
Aug
(286) |
Sep
(208) |
Oct
(127) |
Nov
(97) |
Dec
(54) |
2017 |
Jan
(64) |
Feb
(335) |
Mar
(202) |
Apr
(212) |
May
(139) |
Jun
(127) |
Jul
(294) |
Aug
(154) |
Sep
(170) |
Oct
(152) |
Nov
(156) |
Dec
(62) |
2018 |
Jan
(168) |
Feb
(237) |
Mar
(196) |
Apr
(174) |
May
(174) |
Jun
(161) |
Jul
(127) |
Aug
(88) |
Sep
(149) |
Oct
(66) |
Nov
(52) |
Dec
(135) |
2019 |
Jan
(146) |
Feb
(126) |
Mar
(104) |
Apr
(58) |
May
(60) |
Jun
(28) |
Jul
(197) |
Aug
(129) |
Sep
(141) |
Oct
(148) |
Nov
(63) |
Dec
(100) |
2020 |
Jan
(74) |
Feb
(37) |
Mar
(59) |
Apr
(154) |
May
(194) |
Jun
(133) |
Jul
(313) |
Aug
(197) |
Sep
(49) |
Oct
(162) |
Nov
(143) |
Dec
(57) |
2021 |
Jan
(120) |
Feb
(107) |
Mar
(314) |
Apr
(157) |
May
(524) |
Jun
(169) |
Jul
(72) |
Aug
(133) |
Sep
(135) |
Oct
(146) |
Nov
(198) |
Dec
(325) |
2022 |
Jan
(409) |
Feb
(249) |
Mar
(138) |
Apr
(95) |
May
(102) |
Jun
(221) |
Jul
(66) |
Aug
(120) |
Sep
(192) |
Oct
(131) |
Nov
(53) |
Dec
(171) |
2023 |
Jan
(357) |
Feb
(82) |
Mar
(168) |
Apr
(218) |
May
(196) |
Jun
(86) |
Jul
(115) |
Aug
(49) |
Sep
(190) |
Oct
(102) |
Nov
(45) |
Dec
(76) |
2024 |
Jan
(86) |
Feb
(50) |
Mar
(324) |
Apr
(209) |
May
(197) |
Jun
(232) |
Jul
(194) |
Aug
(247) |
Sep
(219) |
Oct
(266) |
Nov
(328) |
Dec
(304) |
2025 |
Jan
(191) |
Feb
(115) |
Mar
(137) |
Apr
(32) |
May
(126) |
Jun
(403) |
Jul
(213) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sv...@op...> - 2024-10-16 20:09:29
|
Author: manx Date: Wed Oct 16 22:09:13 2024 New Revision: 21843 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21843 Log: [Imp] build: Autotools: Enable C++23 when available. Fixes <https://bugs.openmpt.org/view.php?id=1803>. Modified: trunk/OpenMPT/build/autotools/configure.ac Modified: trunk/OpenMPT/build/autotools/configure.ac ============================================================================== --- trunk/OpenMPT/build/autotools/configure.ac Wed Oct 16 22:05:00 2024 (r21842) +++ trunk/OpenMPT/build/autotools/configure.ac Wed Oct 16 22:09:13 2024 (r21843) @@ -24,9 +24,15 @@ AC_PROG_INSTALL # We need C++17 support. -AX_CXX_COMPILE_STDCXX([20], [noext], [optional]) -AS_IF([test "x$HAVE_CXX20" != "x1"], +AX_CXX_COMPILE_STDCXX([23], [noext], [optional]) +AS_IF([test "x$HAVE_CXX23" != "x1"], [ + AX_CXX_COMPILE_STDCXX([20], [noext], [optional]) + AS_IF([test "x$HAVE_CXX20" != "x1"], + [ + AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) + ],[] + ) AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) ],[] ) |
From: <sv...@op...> - 2024-10-16 20:05:08
|
Author: manx Date: Wed Oct 16 22:05:00 2024 New Revision: 21842 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21842 Log: Merged revision(s) 21840 from branches/OpenMPT-1.30: Merged revision(s) 21838 from trunk/OpenMPT: [Fix] build: Autotools: Fix quoting in C++ detection. ........ ........ Modified: branches/OpenMPT-1.28/ (props changed) branches/OpenMPT-1.28/build/autotools/configure.ac Modified: branches/OpenMPT-1.28/build/autotools/configure.ac ============================================================================== --- branches/OpenMPT-1.28/build/autotools/configure.ac Wed Oct 16 22:03:56 2024 (r21841) +++ branches/OpenMPT-1.28/build/autotools/configure.ac Wed Oct 16 22:05:00 2024 (r21842) @@ -291,13 +291,13 @@ #AC_PROG_CC_C99 # We need C++11 support -AX_CXX_COMPILE_STDCXX(17, [noext], [optional]) +AX_CXX_COMPILE_STDCXX([17], [noext], [optional]) AS_IF([test "x$HAVE_CXX17" != "x1"], [ - AX_CXX_COMPILE_STDCXX(14, [noext], [optional]) + AX_CXX_COMPILE_STDCXX([14], [noext], [optional]) AS_IF([test "x$HAVE_CXX14" != "x1"], [ - AX_CXX_COMPILE_STDCXX(11, [noext], [mandatory]) + AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory]) ],[] ) ],[] |
From: <sv...@op...> - 2024-10-16 20:04:08
|
Author: manx Date: Wed Oct 16 22:03:56 2024 New Revision: 21841 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21841 Log: Merged revision(s) 21840 from branches/OpenMPT-1.30: Merged revision(s) 21838 from trunk/OpenMPT: [Fix] build: Autotools: Fix quoting in C++ detection. ........ ........ Modified: branches/OpenMPT-1.29/ (props changed) branches/OpenMPT-1.29/build/autotools/configure.ac Modified: branches/OpenMPT-1.29/build/autotools/configure.ac ============================================================================== --- branches/OpenMPT-1.29/build/autotools/configure.ac Wed Oct 16 22:03:22 2024 (r21840) +++ branches/OpenMPT-1.29/build/autotools/configure.ac Wed Oct 16 22:03:56 2024 (r21841) @@ -276,13 +276,13 @@ #AC_PROG_CC_C99 # We need C++17 support -#AX_CXX_COMPILE_STDCXX(20, [noext], [optional]) +#AX_CXX_COMPILE_STDCXX([20], [noext], [optional]) #AS_IF([test "x$HAVE_CXX20" != "x1"], # [ -# AX_CXX_COMPILE_STDCXX(17, [noext], [mandatory]) +# AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) # ],[] #) -AX_CXX_COMPILE_STDCXX(17, [noext], [mandatory]) +AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) AC_LANG_PUSH([C]) AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [CFLAGS="$CFLAGS -fvisibility=hidden"]) |
From: <sv...@op...> - 2024-10-16 20:03:35
|
Author: manx Date: Wed Oct 16 22:03:22 2024 New Revision: 21840 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21840 Log: Merged revision(s) 21838 from trunk/OpenMPT: [Fix] build: Autotools: Fix quoting in C++ detection. ........ Modified: branches/OpenMPT-1.30/ (props changed) branches/OpenMPT-1.30/build/autotools/configure.ac Modified: branches/OpenMPT-1.30/build/autotools/configure.ac ============================================================================== --- branches/OpenMPT-1.30/build/autotools/configure.ac Wed Oct 16 22:01:29 2024 (r21839) +++ branches/OpenMPT-1.30/build/autotools/configure.ac Wed Oct 16 22:03:22 2024 (r21840) @@ -282,13 +282,13 @@ #AC_PROG_CC_C99 # We need C++17 support -#AX_CXX_COMPILE_STDCXX(20, [noext], [optional]) +#AX_CXX_COMPILE_STDCXX([20], [noext], [optional]) #AS_IF([test "x$HAVE_CXX20" != "x1"], # [ -# AX_CXX_COMPILE_STDCXX(17, [noext], [mandatory]) +# AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) # ],[] #) -AX_CXX_COMPILE_STDCXX(17, [noext], [mandatory]) +AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) AC_LANG_PUSH([C]) AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [CFLAGS="$CFLAGS -fvisibility=hidden"]) |
From: <sv...@op...> - 2024-10-16 20:01:36
|
Author: manx Date: Wed Oct 16 22:01:29 2024 New Revision: 21839 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21839 Log: Merged revision(s) 21838 from trunk/OpenMPT: [Fix] build: Autotools: Fix quoting in C++ detection. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/build/autotools/configure.ac Modified: branches/OpenMPT-1.31/build/autotools/configure.ac ============================================================================== --- branches/OpenMPT-1.31/build/autotools/configure.ac Wed Oct 16 22:01:05 2024 (r21838) +++ branches/OpenMPT-1.31/build/autotools/configure.ac Wed Oct 16 22:01:29 2024 (r21839) @@ -24,10 +24,10 @@ AC_PROG_INSTALL # We need C++17 support. -AX_CXX_COMPILE_STDCXX(20, [noext], [optional]) +AX_CXX_COMPILE_STDCXX([20], [noext], [optional]) AS_IF([test "x$HAVE_CXX20" != "x1"], [ - AX_CXX_COMPILE_STDCXX(17, [noext], [mandatory]) + AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) ],[] ) |
From: <sv...@op...> - 2024-10-16 20:01:17
|
Author: manx Date: Wed Oct 16 22:01:05 2024 New Revision: 21838 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21838 Log: [Fix] build: Autotools: Fix quoting in C++ detection. Modified: trunk/OpenMPT/build/autotools/configure.ac Modified: trunk/OpenMPT/build/autotools/configure.ac ============================================================================== --- trunk/OpenMPT/build/autotools/configure.ac Wed Oct 16 21:01:15 2024 (r21837) +++ trunk/OpenMPT/build/autotools/configure.ac Wed Oct 16 22:01:05 2024 (r21838) @@ -24,10 +24,10 @@ AC_PROG_INSTALL # We need C++17 support. -AX_CXX_COMPILE_STDCXX(20, [noext], [optional]) +AX_CXX_COMPILE_STDCXX([20], [noext], [optional]) AS_IF([test "x$HAVE_CXX20" != "x1"], [ - AX_CXX_COMPILE_STDCXX(17, [noext], [mandatory]) + AX_CXX_COMPILE_STDCXX([17], [noext], [mandatory]) ],[] ) |
From: <sv...@op...> - 2024-10-16 19:01:27
|
Author: sagamusix Date: Wed Oct 16 21:01:15 2024 New Revision: 21837 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21837 Log: [Ref] Remove unused variable. Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Wed Oct 16 20:29:32 2024 (r21836) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Wed Oct 16 21:01:15 2024 (r21837) @@ -497,7 +497,6 @@ const int dpiX = Util::GetDPIx(m_hWnd); const int dpiY = Util::GetDPIy(m_hWnd); - const CHANNELINDEX channels = m_ModDoc->GetNumChannels(); PAINTSTRUCT pDC; ::BeginPaint(m_hWnd, &pDC); |
From: <sv...@op...> - 2024-10-16 18:29:47
|
Author: sagamusix Date: Wed Oct 16 20:29:32 2024 New Revision: 21836 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21836 Log: [Ref] Don't use fixed-size arrays for channel states in pattern editor code. Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp trunk/OpenMPT/mptrack/View_pat.cpp trunk/OpenMPT/mptrack/View_pat.h Modified: trunk/OpenMPT/mptrack/Draw_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Draw_pat.cpp Wed Oct 16 18:24:00 2024 (r21835) +++ trunk/OpenMPT/mptrack/Draw_pat.cpp Wed Oct 16 20:29:32 2024 (r21836) @@ -50,16 +50,11 @@ COLUMN_BITS_FXPARAM = 0x10, COLUMN_BITS_FXCMDANDPARAM = 0x18, COLUMN_BITS_ALLCOLUMNS = 0x1F, - COLUMN_BITS_UNKNOWN = 0x20, // Appears to be unused - COLUMN_BITS_ALL = 0x3F, COLUMN_BITS_SKIP = 0x40, COLUMN_BITS_INVISIBLE = 0x80, }; - - - ///////////////////////////////////////////////////////////////////////////// // Effect colour codes @@ -526,7 +521,9 @@ MPT_ASSERT(pDC); UpdateSizes(); - if ((pModDoc = GetDocument()) == nullptr) return; + if ((pModDoc = GetDocument()) == nullptr) + return; + m_chnState.resize(pModDoc->GetNumChannels()); const int vuHeight = MulDiv(VUMETERS_HEIGHT, m_nDPIy, 96); const int colHeight = MulDiv(COLHDR_HEIGHT, m_nDPIy, 96); @@ -760,7 +757,7 @@ if(m_Status[psShowVUMeters]) { - OldVUMeters[ncolhdr] = 0; + m_chnState[ncolhdr].vuMeterOld = 0; DrawChannelVUMeter(hdc, rect.left, rect.bottom, ncolhdr); rect.top += vuHeight; rect.bottom += vuHeight; @@ -809,35 +806,34 @@ void CViewPattern::DrawPatternData(HDC hdc, PATTERNINDEX nPattern, bool selEnable, bool isPlaying, ROWINDEX startRow, ROWINDEX numRows, CHANNELINDEX startChan, CRect &rcClient, int *pypaint) { - uint8 selectedCols[MAX_BASECHANNELS] = {}; // Bit mask of selected channel components - static_assert(1 << PatternCursor::lastColumn <= Util::MaxValueOfType(selectedCols[0]) , "Columns are used as bitmasks."); + static_assert(1 << PatternCursor::lastColumn <= Util::MaxValueOfType(ChannelState{}.selectedCols), "Columns are used as bitmasks"); + static_assert(!((1 << PatternCursor::lastColumn) & (COLUMN_BITS_INVISIBLE | COLUMN_BITS_SKIP)), "Column bits and special bits overlap"); const CSoundFile &sndFile = GetDocument()->GetSoundFile(); if(!sndFile.Patterns.IsValidPat(nPattern)) - { return; - } const CPattern &pattern = sndFile.Patterns[nPattern]; const auto patternSetupFlags = TrackerSettings::Instance().m_dwPatternSetup.Get(); const PATTERNFONT *pfnt = PatternFont::currentFont; CRect rect; int xpaint, ypaint = *pypaint; - UINT nColumnWidth; - CHANNELINDEX ncols = sndFile.GetNumChannels(); - nColumnWidth = m_szCell.cx; + const CHANNELINDEX ncols = sndFile.GetNumChannels(); + const UINT nColumnWidth = m_szCell.cx; rect.SetRect(m_szHeader.cx, rcClient.top, m_szHeader.cx+nColumnWidth, rcClient.bottom); for(CHANNELINDEX cmk = startChan; cmk < ncols; cmk++) { - selectedCols[cmk] = selEnable ? m_Selection.GetSelectionBits(cmk) : 0; - if (!::RectVisible(hdc, &rect)) selectedCols[cmk] |= COLUMN_BITS_INVISIBLE; + m_chnState[cmk].selectedCols = selEnable ? m_Selection.GetSelectionBits(cmk) : 0; + if(!::RectVisible(hdc, &rect)) + m_chnState[cmk].selectedCols |= COLUMN_BITS_INVISIBLE; rect.left += nColumnWidth; rect.right += nColumnWidth; } // Max Visible Column CHANNELINDEX maxcol = ncols; - while ((maxcol > startChan) && (selectedCols[maxcol-1] & COLUMN_BITS_INVISIBLE)) maxcol--; + while((maxcol > startChan) && (m_chnState[maxcol -1].selectedCols & COLUMN_BITS_INVISIBLE)) + maxcol--; // Init bitmap border { UINT maxndx = sndFile.GetNumChannels() * m_szCell.cx; @@ -878,7 +874,7 @@ { // No speedup for these columns next time for(CHANNELINDEX iup = startChan; iup < maxcol; iup++) - selectedCols[iup] &= ~COLUMN_BITS_SKIP; + m_chnState[iup].selectedCols &= ~COLUMN_BITS_SKIP; // skip row ypaint += m_szCell.cy; if(ypaint >= rcClient.bottom) @@ -887,7 +883,7 @@ } rect.right = rect.left + m_szHeader.cx; - bool rowDisabled = sndFile.m_lockRowStart != ROWINDEX_INVALID && (row < sndFile.m_lockRowStart || row > sndFile.m_lockRowEnd); + const bool rowDisabled = sndFile.m_lockRowStart != ROWINDEX_INVALID && (row < sndFile.m_lockRowStart || row > sndFile.m_lockRowEnd); TCHAR s[32]; if(hexNumbers) wsprintf(s, _T("%s%02X"), compRow < 0 ? _T("-") : _T(""), std::abs(compRow)); @@ -948,14 +944,14 @@ // Eliminate non-visible column xpaint = m_szHeader.cx; col = startChan; - while ((selectedCols[col] & COLUMN_BITS_INVISIBLE) && (col < maxcol)) + while((m_chnState[col].selectedCols & COLUMN_BITS_INVISIBLE) && (col < maxcol)) { - selectedCols[col] &= ~COLUMN_BITS_SKIP; + m_chnState[col].selectedCols &= ~COLUMN_BITS_SKIP; col++; xpaint += nColumnWidth; } // Optimization: same row color ? - bool useSpeedUpMask = (oldrowcolor == EncodeRowColor(row_bkcol, row_col, bRowSel)) && !blendModeChanged; + const bool useSpeedUpMask = (oldrowcolor == EncodeRowColor(row_bkcol, row_col, bRowSel)) && !blendModeChanged; xbmp = nbmp = 0; do { @@ -967,7 +963,7 @@ const bool drawDefaultVolume = DrawDefaultVolume(m); DWORD dwSpeedUpMask = 0; - if (useSpeedUpMask && (selectedCols[col] & COLUMN_BITS_SKIP) && (row)) + if(useSpeedUpMask && (m_chnState[col].selectedCols & COLUMN_BITS_SKIP) && (row)) { const ModCommand *mold = m - ncols; const bool drawOldDefaultVolume = DrawDefaultVolume(mold); @@ -989,9 +985,9 @@ } if (dwSpeedUpMask == COLUMN_BITS_ALLCOLUMNS) goto DoBlit; } - selectedCols[col] |= COLUMN_BITS_SKIP; + m_chnState[col].selectedCols |= COLUMN_BITS_SKIP; col_sel = 0; - if (bRowSel) col_sel = selectedCols[col] & COLUMN_BITS_ALL; + if(bRowSel) col_sel = m_chnState[col].selectedCols & COLUMN_BITS_ALLCOLUMNS; tx_col = row_col; bk_col = row_bkcol; if (col_sel) @@ -1184,17 +1180,16 @@ if (ypaint >= rcClient.bottom) break; } *pypaint = ypaint; - } void CViewPattern::DrawChannelVUMeter(HDC hdc, int x, int y, UINT nChn) { - if(ChnVUMeters[nChn] == OldVUMeters[nChn]) + if(m_chnState[nChn].vuMeter == m_chnState[nChn].vuMeterOld) return; - uint8 vuL = static_cast<uint8>((ChnVUMeters[nChn] & 0xFF00) >> 8); - uint8 vuR = static_cast<uint8>(ChnVUMeters[nChn] & 0xFF); + uint8 vuL = static_cast<uint8>((m_chnState[nChn].vuMeter & 0xFF00) >> 8); + uint8 vuR = static_cast<uint8>(m_chnState[nChn].vuMeter & 0xFF); vuL /= 15; vuR /= 15; LimitMax(vuL, uint8(8)); @@ -1216,7 +1211,7 @@ BitBlt(hdc, x + midSpacer / 2, y, barWidth, m_ledHeight, m_vuMeterDC, srcOffsetX + barWidth, vuR * m_ledHeight, SRCCOPY); m_vuMeterDC.SelectObject(oldBitmap); - OldVUMeters[nChn] = ChnVUMeters[nChn]; + m_chnState[nChn].vuMeterOld = m_chnState[nChn].vuMeter; } @@ -1799,7 +1794,8 @@ CMainFrame *pMainFrm = CMainFrame::GetMainFrame(); const CModDoc *pModDoc = GetDocument(); - if ((!pModDoc) || (!pMainFrm)) return; + if(!pModDoc || !pMainFrm) + return; CRect rcClient; GetClientRect(&rcClient); int xofs = GetXScrollPos(); @@ -1807,11 +1803,13 @@ const bool isPlaying = (pMainFrm->GetFollowSong(pModDoc) == m_hWnd); int x = m_szHeader.cx; CHANNELINDEX nChn = static_cast<CHANNELINDEX>(xofs); + const CHANNELINDEX numChannels = std::min(pModDoc->GetNumChannels(), static_cast<CHANNELINDEX>(m_chnState.size())); const int yPos = rcClient.top + MulDiv(COLHDR_HEIGHT, m_nDPIy, 96); - while ((nChn < pModDoc->GetNumChannels()) && (x < rcClient.right)) + while(nChn < numChannels && x < rcClient.right) { - ChnVUMeters[nChn] = static_cast<uint16>(pnotify->pos[nChn]); - if ((!isPlaying) || pnotify->type[Notification::Stop]) ChnVUMeters[nChn] = 0; + m_chnState[nChn].vuMeter = static_cast<uint16>(pnotify->pos[nChn]); + if(!isPlaying || pnotify->type[Notification::Stop]) + m_chnState[nChn].vuMeter = 0; DrawChannelVUMeter(hdc, x, rcClient.top + yPos, nChn); nChn++; x += m_szCell.cx; Modified: trunk/OpenMPT/mptrack/View_pat.cpp ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.cpp Wed Oct 16 18:24:00 2024 (r21835) +++ trunk/OpenMPT/mptrack/View_pat.cpp Wed Oct 16 20:29:32 2024 (r21836) @@ -177,9 +177,7 @@ { CModScrollView::OnInitialUpdate(); EnableToolTips(); - ChnVUMeters.fill(0); - OldVUMeters.fill(0); - m_previousNote.fill(NOTE_NONE); + m_chnState.assign(GetDocument()->GetNumChannels(), {}); m_splitActiveNoteChannel.fill(NOTE_CHANNEL_MAP_INVALID); m_activeNoteChannel.fill(NOTE_CHANNEL_MAP_INVALID); m_nPlayPat = PATTERNINDEX_INVALID; @@ -203,7 +201,6 @@ m_nLastPlayedRow = 0; m_nLastPlayedOrder = ORDERINDEX_INVALID; m_prevChordNote = NOTE_NONE; - m_previousPCevent.fill({PLUGINDEX_INVALID, 0}); } @@ -3643,7 +3640,8 @@ if(pnotify->type[Notification::Stop]) { m_baPlayingNote.reset(); - ChnVUMeters.fill(0); // Also zero all non-visible VU meters + for(auto &chnState : m_chnState) + chnState.vuMeter = 0; SetPlayCursor(PATTERNINDEX_INVALID, ROWINDEX_INVALID, 0); } @@ -3673,7 +3671,7 @@ continue; const ModCommand &m = *sndFile.Patterns[pattern].GetpModCommand(row, c); - if((m_previousPCevent[c] == plugParam && m.IsEmpty()) || (m.IsPcNote() && m.instr == plugSlot + 1 && m.GetValueVolCol() == paramIndex)) + if((c < m_chnState.size() && m_chnState[c].previousPCevent == plugParam && m.IsEmpty()) || (m.IsPcNote() && m.instr == plugSlot + 1 && m.GetValueVolCol() == paramIndex)) { return c; break; @@ -3725,7 +3723,8 @@ if(m.IsEmpty() || m.IsPcNote()) { m.Set(NOTE_PCS, static_cast<ModCommand::INSTR>(plugSlot + 1), static_cast<uint16>(paramIndex), static_cast<uint16>(pPlug->GetParameter(static_cast<PlugParamIndex>(paramIndex)) * ModCommand::maxColumnValue)); - m_previousPCevent[chn] = plugParam; + m_chnState.resize(sndFile.GetNumChannels()); + m_chnState[chn].previousPCevent = plugParam; } } else if(sndFile.GetModSpecifications().HasCommand(CMD_SMOOTHMIDI)) { @@ -3942,7 +3941,8 @@ ModCommand &m = GetModCommand(sndFile, editPos); pModDoc->GetPatternUndo().PrepareUndo(editPos.pattern, editPos.channel, editPos.row, 1, 1, "MIDI Mapping Record"); m.Set(NOTE_PCS, mappedIndex, static_cast<uint16>(paramIndex), static_cast<uint16>((paramValue * ModCommand::maxColumnValue) / 16383)); - m_previousPCevent[editPos.channel] = std::make_pair(static_cast<PLUGINDEX>(mappedIndex - 1), paramIndex); + m_chnState.resize(pModDoc->GetNumChannels()); + m_chnState[editPos.channel].previousPCevent = std::make_pair(static_cast<PLUGINDEX>(mappedIndex - 1), paramIndex); if(!liveRecord) InvalidateRow(editPos.row); pModDoc->SetModified(); @@ -5255,7 +5255,7 @@ bool modified = false; for(int i = 0; i < numNotes; i++) { - if(m_previousNote[noteChannels[i]] != notes[i]) + if(noteChannels[i] < m_chnState.size() && m_chnState[noteChannels[i]].previousNote != notes[i]) { // This might be a note-off from a past note, but since we already hit a new note on this channel, we ignore it. continue; @@ -5667,7 +5667,8 @@ if(newcmd.IsNote()) { - m_previousNote[nChn] = note; + m_chnState.resize(sndFile.GetNumChannels()); + m_chnState[nChn].previousNote = note; } // -- if recording, handle post note entry behaviour (move cursor etc..) @@ -5891,7 +5892,8 @@ m_chordPatternChannels[i] = curChn; ModCommand &m = newRow[curChn]; - m_previousNote[curChn] = m.note = chordNotes[i]; + m_chnState.resize(sndFile.GetNumChannels()); + m_chnState[curChn].previousNote = m.note = chordNotes[i]; if(newRow[chn].instr) { m.instr = newRow[chn].instr; Modified: trunk/OpenMPT/mptrack/View_pat.h ============================================================================== --- trunk/OpenMPT/mptrack/View_pat.h Wed Oct 16 18:24:00 2024 (r21835) +++ trunk/OpenMPT/mptrack/View_pat.h Wed Oct 16 20:29:32 2024 (r21836) @@ -211,19 +211,24 @@ std::array<std::vector<uint32>, 16> m_midiSustainBuffer; std::bitset<16> m_midiSustainActive; - std::array<uint16, MAX_BASECHANNELS> ChnVUMeters; - std::array<uint16, MAX_BASECHANNELS> OldVUMeters; + struct ChannelState + { + uint16 vuMeter = 0; + uint16 vuMeterOld = 0; + std::pair<PLUGINDEX, PlugParamIndex> previousPCevent = {PLUGINDEX_INVALID, 0}; + ModCommand::NOTE previousNote = NOTE_NONE; + uint8 selectedCols = 0; + }; + std::vector<ChannelState> m_chnState; std::bitset<128> m_baPlayingNote; CModDoc::NoteToChannelMap m_noteChannel; // Note -> Preview channel assignment - std::array<ModCommand::NOTE, 10> m_octaveKeyMemory; - std::array<ModCommand::NOTE, MAX_BASECHANNELS> m_previousNote; - std::array<std::pair<PLUGINDEX, PlugParamIndex>, MAX_BASECHANNELS> m_previousPCevent; // For multichannel recording + std::array<ModCommand::NOTE, (NOTE_MAX - NOTE_MIN + 12) / 12> m_octaveKeyMemory; std::array<uint8, NOTE_MAX + NOTE_MIN> m_activeNoteChannel; std::array<uint8, NOTE_MAX + NOTE_MIN> m_splitActiveNoteChannel; static constexpr uint8 NOTE_CHANNEL_MAP_INVALID = 0xFF; - static_assert(MAX_BASECHANNELS <= std::numeric_limits<decltype(m_activeNoteChannel)::value_type>::max()); - static_assert(MAX_BASECHANNELS <= NOTE_CHANNEL_MAP_INVALID); + static_assert(MAX_BASECHANNELS - 1 <= std::numeric_limits<decltype(m_activeNoteChannel)::value_type>::max()); + static_assert(MAX_BASECHANNELS - 1 < NOTE_CHANNEL_MAP_INVALID); public: std::unique_ptr<CEffectVis> m_pEffectVis; @@ -488,8 +493,6 @@ afx_msg void OnUpdateUndo(CCmdUI *pCmdUI); afx_msg void OnUpdateRedo(CCmdUI *pCmdUI); afx_msg void OnSelectPlugin(UINT nID); - // cppcheck-suppress duplInheritedMember - afx_msg LRESULT OnUpdatePosition(WPARAM nOrd, LPARAM nRow); afx_msg LRESULT OnMidiMsg(WPARAM, LPARAM); afx_msg LRESULT OnRecordPlugParamChange(WPARAM, LPARAM); afx_msg LRESULT OnCustomKeyMsg(WPARAM, LPARAM); |
From: <sv...@op...> - 2024-10-16 16:24:08
|
Author: manx Date: Wed Oct 16 18:24:00 2024 New Revision: 21835 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21835 Log: [Var] build: Autotools: Update ax_cxx_compile_stdcxx.m4 to version 24. Modified: trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 Modified: trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 ============================================================================== --- trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 Wed Oct 16 13:05:13 2024 (r21834) +++ trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 Wed Oct 16 18:24:00 2024 (r21835) @@ -10,8 +10,8 @@ # # Check for baseline language coverage in the compiler for the specified # version of the C++ standard. If necessary, add switches to CXX and -# CXXCPP to enable support. VERSION may be '11', '14', '17', or '20' for -# the respective C++ standard version. +# CXXCPP to enable support. VERSION may be '11', '14', '17', '20', or +# '23' for the respective C++ standard version. # # The second argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. @@ -36,14 +36,15 @@ # Copyright (c) 2016, 2018 Krzesimir Nowak <qd...@gm...> # Copyright (c) 2019 Enji Cooper <yan...@gm...> # Copyright (c) 2020 Jason Merrill <ja...@re...> -# Copyright (c) 2021 Jörn Heusipp <os...@pr...> +# Copyright (c) 2021, 2024 Jörn Heusipp <os...@pr...> +# Copyright (c) 2015, 2022, 2023, 2024 Olly Betts # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 14 +#serial 24 dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro dnl (serial version number 13). @@ -53,6 +54,7 @@ [$1], [14], [ax_cxx_compile_alternatives="14 1y"], [$1], [17], [ax_cxx_compile_alternatives="17 1z"], [$1], [20], [ax_cxx_compile_alternatives="20"], + [$1], [23], [ax_cxx_compile_alternatives="23"], [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$2], [], [], [$2], [ext], [], @@ -104,9 +106,18 @@ dnl HP's aCC needs +std=c++11 according to: dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf dnl Cray's crayCC needs "-h std=c++11" + dnl MSVC needs -std:c++NN for C++17 and later (default is C++14) for alternative in ${ax_cxx_compile_alternatives}; do - for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) + for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}" MSVC; do + if test x"$switch" = xMSVC; then + dnl AS_TR_SH maps both `:` and `=` to `_` so -std:c++17 would collide + dnl with -std=c++17. We suffix the cache variable name with _MSVC to + dnl avoid this. + switch=-std:c++${alternative} + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_${switch}_MSVC]) + else + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) + fi AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, [ac_save_CXX="$CXX" @@ -150,31 +161,41 @@ dnl Test body for checking C++11 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11] ) dnl Test body for checking C++14 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 + [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14] ) dnl Test body for checking C++17 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 + [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_17] ) dnl Test body for checking C++20 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_20], + [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_20] +) + +dnl Test body for checking C++23 support + +m4_define([_AX_CXX_COMPILE_STDCXX_testbody_23], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 _AX_CXX_COMPILE_STDCXX_testbody_new_in_20 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_23 ) @@ -189,7 +210,21 @@ #error "This is not a C++ compiler" -#elif __cplusplus < 201103L +// MSVC always sets __cplusplus to 199711L in older versions; newer versions +// only set it correctly if /Zc:__cplusplus is specified as well as a +// /std:c++NN switch: +// +// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ +// +// The value __cplusplus ought to have is available in _MSVC_LANG since +// Visual Studio 2015 Update 3: +// +// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros +// +// This was also the first MSVC version to support C++14 so we can't use the +// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having +// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later. +#elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" @@ -480,7 +515,7 @@ #error "This is not a C++ compiler" -#elif __cplusplus < 201402L +#elif __cplusplus < 201402L && !defined _MSC_VER #error "This is not a C++14 compiler" @@ -604,7 +639,7 @@ #error "This is not a C++ compiler" -#elif __cplusplus < 201703L +#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L #error "This is not a C++17 compiler" @@ -970,7 +1005,7 @@ } // namespace cxx17 -#endif // __cplusplus < 201703L +#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L ]]) @@ -983,7 +1018,7 @@ #error "This is not a C++ compiler" -#elif __cplusplus < 202002L +#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202002L #error "This is not a C++20 compiler" @@ -1000,6 +1035,36 @@ } // namespace cxx20 -#endif // __cplusplus < 202002L +#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202002L + +]]) + + +dnl Tests for new features in C++23 + +m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_23], [[ + +#ifndef __cplusplus + +#error "This is not a C++ compiler" + +#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202302L + +#error "This is not a C++23 compiler" + +#else + +#include <version> + +namespace cxx23 +{ + +// As C++23 supports feature test macros in the standard, there is no +// immediate need to actually test for feature availability on the +// Autoconf side. + +} // namespace cxx23 + +#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202302L ]]) |
From: <sv...@op...> - 2024-10-16 11:05:25
|
Author: manx Date: Wed Oct 16 13:05:13 2024 New Revision: 21834 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21834 Log: Revert r21833. See <https://github.com/autoconf-archive/autoconf-archive/pull/307>. Merged revision(s) 21833 from trunk/OpenMPT: [Var] build: Autotools: Update ax_cxx_compile_stdcxx.m4 to version 21. ........ Modified: trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 Modified: trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 ============================================================================== --- trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 Wed Oct 16 11:24:49 2024 (r21833) +++ trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 Wed Oct 16 13:05:13 2024 (r21834) @@ -10,8 +10,8 @@ # # Check for baseline language coverage in the compiler for the specified # version of the C++ standard. If necessary, add switches to CXX and -# CXXCPP to enable support. VERSION may be '11', '14', '17', '20', or -# '23' for the respective C++ standard version. +# CXXCPP to enable support. VERSION may be '11', '14', '17', or '20' for +# the respective C++ standard version. # # The second argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. @@ -37,14 +37,13 @@ # Copyright (c) 2019 Enji Cooper <yan...@gm...> # Copyright (c) 2020 Jason Merrill <ja...@re...> # Copyright (c) 2021 Jörn Heusipp <os...@pr...> -# Copyright (c) 2015, 2022, 2023, 2024 Olly Betts # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 21 +#serial 14 dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro dnl (serial version number 13). @@ -54,7 +53,6 @@ [$1], [14], [ax_cxx_compile_alternatives="14 1y"], [$1], [17], [ax_cxx_compile_alternatives="17 1z"], [$1], [20], [ax_cxx_compile_alternatives="20"], - [$1], [23], [ax_cxx_compile_alternatives="23"], [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$2], [], [], [$2], [ext], [], @@ -77,7 +75,7 @@ ac_success=yes fi]) - m4_if([$2], [noext], [dnl + m4_if([$2], [noext], [], [dnl if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do switch="-std=gnu++${alternative}" @@ -101,23 +99,14 @@ done fi]) - m4_if([$2], [ext], [dnl + m4_if([$2], [ext], [], [dnl if test x$ac_success = xno; then dnl HP's aCC needs +std=c++11 according to: dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf dnl Cray's crayCC needs "-h std=c++11" - dnl MSVC needs -std:c++NN for C++17 and later (default is C++14) for alternative in ${ax_cxx_compile_alternatives}; do - for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}" MSVC; do - if test x"$switch" = xMSVC; then - dnl AS_TR_SH maps both `:` and `=` to `_` so -std:c++17 would collide - dnl with -std=c++17. We suffix the cache variable name with _MSVC to - dnl avoid this. - switch=-std:c++${alternative} - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_${switch}_MSVC]) - else - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) - fi + for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, [ac_save_CXX="$CXX" @@ -161,41 +150,31 @@ dnl Test body for checking C++11 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], - [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11] + _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 ) dnl Test body for checking C++14 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], - [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_14] + _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 ) dnl Test body for checking C++17 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17], - [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_17] + _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 ) dnl Test body for checking C++20 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_20], - [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_20] -) - -dnl Test body for checking C++23 support - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_23], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 _AX_CXX_COMPILE_STDCXX_testbody_new_in_20 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_23 ) @@ -210,21 +189,7 @@ #error "This is not a C++ compiler" -// MSVC always sets __cplusplus to 199711L in older versions; newer versions -// only set it correctly if /Zc:__cplusplus is specified as well as a -// /std:c++NN switch: -// -// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ -// -// The value __cplusplus ought to have is available in _MSVC_LANG since -// Visual Studio 2015 Update 3: -// -// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros -// -// This was also the first MSVC version to support C++14 so we can't use the -// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having -// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later. -#elif __cplusplus < 201103L && !defined _MSC_VER +#elif __cplusplus < 201103L #error "This is not a C++11 compiler" @@ -515,7 +480,7 @@ #error "This is not a C++ compiler" -#elif __cplusplus < 201402L && !defined _MSC_VER +#elif __cplusplus < 201402L #error "This is not a C++14 compiler" @@ -639,7 +604,7 @@ #error "This is not a C++ compiler" -#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L +#elif __cplusplus < 201703L #error "This is not a C++17 compiler" @@ -1005,7 +970,7 @@ } // namespace cxx17 -#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L +#endif // __cplusplus < 201703L ]]) @@ -1018,7 +983,7 @@ #error "This is not a C++ compiler" -#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202002L +#elif __cplusplus < 202002L #error "This is not a C++20 compiler" @@ -1035,36 +1000,6 @@ } // namespace cxx20 -#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202002L - -]]) - - -dnl Tests for new features in C++23 - -m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_23], [[ - -#ifndef __cplusplus - -#error "This is not a C++ compiler" - -#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202302L - -#error "This is not a C++23 compiler" - -#else - -#include <version> - -namespace cxx23 -{ - -// As C++23 supports feature test macros in the standard, there is no -// immediate need to actually test for feature availability on the -// Autoconf side. - -} // namespace cxx23 - -#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202302L +#endif // __cplusplus < 202002L ]]) |
From: <sv...@op...> - 2024-10-16 09:24:57
|
Author: manx Date: Wed Oct 16 11:24:49 2024 New Revision: 21833 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21833 Log: [Var] build: Autotools: Update ax_cxx_compile_stdcxx.m4 to version 21. Modified: trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 Modified: trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 ============================================================================== --- trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 Tue Oct 15 23:24:29 2024 (r21832) +++ trunk/OpenMPT/build/autotools/ax_cxx_compile_stdcxx.m4 Wed Oct 16 11:24:49 2024 (r21833) @@ -10,8 +10,8 @@ # # Check for baseline language coverage in the compiler for the specified # version of the C++ standard. If necessary, add switches to CXX and -# CXXCPP to enable support. VERSION may be '11', '14', '17', or '20' for -# the respective C++ standard version. +# CXXCPP to enable support. VERSION may be '11', '14', '17', '20', or +# '23' for the respective C++ standard version. # # The second argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. @@ -37,13 +37,14 @@ # Copyright (c) 2019 Enji Cooper <yan...@gm...> # Copyright (c) 2020 Jason Merrill <ja...@re...> # Copyright (c) 2021 Jörn Heusipp <os...@pr...> +# Copyright (c) 2015, 2022, 2023, 2024 Olly Betts # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 14 +#serial 21 dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro dnl (serial version number 13). @@ -53,6 +54,7 @@ [$1], [14], [ax_cxx_compile_alternatives="14 1y"], [$1], [17], [ax_cxx_compile_alternatives="17 1z"], [$1], [20], [ax_cxx_compile_alternatives="20"], + [$1], [23], [ax_cxx_compile_alternatives="23"], [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl m4_if([$2], [], [], [$2], [ext], [], @@ -75,7 +77,7 @@ ac_success=yes fi]) - m4_if([$2], [noext], [], [dnl + m4_if([$2], [noext], [dnl if test x$ac_success = xno; then for alternative in ${ax_cxx_compile_alternatives}; do switch="-std=gnu++${alternative}" @@ -99,14 +101,23 @@ done fi]) - m4_if([$2], [ext], [], [dnl + m4_if([$2], [ext], [dnl if test x$ac_success = xno; then dnl HP's aCC needs +std=c++11 according to: dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf dnl Cray's crayCC needs "-h std=c++11" + dnl MSVC needs -std:c++NN for C++17 and later (default is C++14) for alternative in ${ax_cxx_compile_alternatives}; do - for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do - cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) + for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}" MSVC; do + if test x"$switch" = xMSVC; then + dnl AS_TR_SH maps both `:` and `=` to `_` so -std:c++17 would collide + dnl with -std=c++17. We suffix the cache variable name with _MSVC to + dnl avoid this. + switch=-std:c++${alternative} + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_${switch}_MSVC]) + else + cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch]) + fi AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch, $cachevar, [ac_save_CXX="$CXX" @@ -150,31 +161,41 @@ dnl Test body for checking C++11 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11] ) dnl Test body for checking C++14 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 + [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14] ) dnl Test body for checking C++17 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17], - _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 - _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 + [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_17] ) dnl Test body for checking C++20 support m4_define([_AX_CXX_COMPILE_STDCXX_testbody_20], + [_AX_CXX_COMPILE_STDCXX_testbody_new_in_11 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_20] +) + +dnl Test body for checking C++23 support + +m4_define([_AX_CXX_COMPILE_STDCXX_testbody_23], _AX_CXX_COMPILE_STDCXX_testbody_new_in_11 _AX_CXX_COMPILE_STDCXX_testbody_new_in_14 _AX_CXX_COMPILE_STDCXX_testbody_new_in_17 _AX_CXX_COMPILE_STDCXX_testbody_new_in_20 + _AX_CXX_COMPILE_STDCXX_testbody_new_in_23 ) @@ -189,7 +210,21 @@ #error "This is not a C++ compiler" -#elif __cplusplus < 201103L +// MSVC always sets __cplusplus to 199711L in older versions; newer versions +// only set it correctly if /Zc:__cplusplus is specified as well as a +// /std:c++NN switch: +// +// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/ +// +// The value __cplusplus ought to have is available in _MSVC_LANG since +// Visual Studio 2015 Update 3: +// +// https://learn.microsoft.com/en-us/cpp/preprocessor/predefined-macros +// +// This was also the first MSVC version to support C++14 so we can't use the +// value of either __cplusplus or _MSVC_LANG to quickly rule out MSVC having +// C++11 or C++14 support, but we can check _MSVC_LANG for C++17 and later. +#elif __cplusplus < 201103L && !defined _MSC_VER #error "This is not a C++11 compiler" @@ -480,7 +515,7 @@ #error "This is not a C++ compiler" -#elif __cplusplus < 201402L +#elif __cplusplus < 201402L && !defined _MSC_VER #error "This is not a C++14 compiler" @@ -604,7 +639,7 @@ #error "This is not a C++ compiler" -#elif __cplusplus < 201703L +#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L #error "This is not a C++17 compiler" @@ -970,7 +1005,7 @@ } // namespace cxx17 -#endif // __cplusplus < 201703L +#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 201703L ]]) @@ -983,7 +1018,7 @@ #error "This is not a C++ compiler" -#elif __cplusplus < 202002L +#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202002L #error "This is not a C++20 compiler" @@ -1000,6 +1035,36 @@ } // namespace cxx20 -#endif // __cplusplus < 202002L +#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202002L + +]]) + + +dnl Tests for new features in C++23 + +m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_23], [[ + +#ifndef __cplusplus + +#error "This is not a C++ compiler" + +#elif (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202302L + +#error "This is not a C++23 compiler" + +#else + +#include <version> + +namespace cxx23 +{ + +// As C++23 supports feature test macros in the standard, there is no +// immediate need to actually test for feature availability on the +// Autoconf side. + +} // namespace cxx23 + +#endif // (defined _MSVC_LANG ? _MSVC_LANG : __cplusplus) < 202302L ]]) |
From: <sv...@op...> - 2024-10-15 21:24:41
|
Author: sagamusix Date: Tue Oct 15 23:24:29 2024 New Revision: 21832 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21832 Log: [Imp] PSM: Only allocate temporary memory for as many channels as there are in the module. Modified: trunk/OpenMPT/soundlib/Load_psm.cpp Modified: trunk/OpenMPT/soundlib/Load_psm.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_psm.cpp Tue Oct 15 23:15:52 2024 (r21831) +++ trunk/OpenMPT/soundlib/Load_psm.cpp Tue Oct 15 23:24:29 2024 (r21832) @@ -164,10 +164,10 @@ std::vector<bool> channelSurround; char songName[10] = {}; - PSMSubSong() - : channelPanning(MAX_BASECHANNELS, 128) - , channelVolume(MAX_BASECHANNELS, 64) - , channelSurround(MAX_BASECHANNELS, false) + PSMSubSong(CHANNELINDEX numChannels) + : channelPanning(numChannels, 128) + , channelVolume(numChannels, 64) + , channelSurround(numChannels, false) { } void SetPanning(CHANNELINDEX chn, uint8 type, int16 pan, bool &subsongPanningDiffers, std::vector<PSMSubSong> &subsongs) @@ -344,7 +344,7 @@ PSMSongHeader songHeader; chunk.ReadStruct(songHeader); - PSMSubSong subsong; + PSMSubSong subsong{GetNumChannels()}; mpt::String::WriteAutoBuf(subsong.songName) = mpt::String::ReadBuf(mpt::String::nullTerminated, songHeader.songType); if(!Order().empty()) |
From: <sv...@op...> - 2024-10-15 21:15:59
|
Author: sagamusix Date: Tue Oct 15 23:15:52 2024 New Revision: 21831 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21831 Log: [Ref] Simplify record group reassignment in ReArrangeChannels. Modified: trunk/OpenMPT/mptrack/Modedit.cpp Modified: trunk/OpenMPT/mptrack/Modedit.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Modedit.cpp Tue Oct 15 23:09:43 2024 (r21830) +++ trunk/OpenMPT/mptrack/Modedit.cpp Tue Oct 15 23:15:52 2024 (r21831) @@ -255,13 +255,9 @@ } std::vector<ModChannel> chns(m_SndFile.m_PlayState.Chn.begin(), m_SndFile.m_PlayState.Chn.begin() + oldNumChannels); - std::vector<RecordGroup> recordStates(oldNumChannels); - auto chnMutePendings = m_SndFile.m_bChannelMuteTogglePending; - for(CHANNELINDEX chn = 0; chn < oldNumChannels; chn++) - { - recordStates[chn] = GetChannelRecordGroup(chn); - } - ReinitRecordState(); + const auto chnMutePendings = m_SndFile.m_bChannelMuteTogglePending; + const auto recordStates = m_multiRecordGroup; + m_multiRecordGroup.clear(); for(CHANNELINDEX chn = 0; chn < newNumChannels; chn++) { @@ -270,7 +266,8 @@ { m_SndFile.ChnSettings[chn] = settings[srcChn]; m_SndFile.m_PlayState.Chn[chn] = chns[srcChn]; - SetChannelRecordGroup(chn, recordStates[srcChn]); + if(srcChn < recordStates.size()) + SetChannelRecordGroup(chn, recordStates[srcChn]); m_SndFile.m_bChannelMuteTogglePending[chn] = chnMutePendings[srcChn]; if(m_SndFile.m_opl) m_SndFile.m_opl->MoveChannel(srcChn, chn); |
From: <sv...@op...> - 2024-10-15 21:09:55
|
Author: sagamusix Date: Tue Oct 15 23:09:43 2024 New Revision: 21830 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21830 Log: [Ref] Do not use a fixed-size bitset for record groups. Modified: trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h Modified: trunk/OpenMPT/mptrack/Moddoc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp Tue Oct 15 23:03:59 2024 (r21829) +++ trunk/OpenMPT/mptrack/Moddoc.cpp Tue Oct 15 23:09:43 2024 (r21830) @@ -1391,13 +1391,10 @@ RecordGroup CModDoc::GetChannelRecordGroup(CHANNELINDEX channel) const { - if(channel >= GetNumChannels()) + if(channel >= GetNumChannels() || channel >= m_multiRecordGroup.size()) return RecordGroup::NoGroup; - if(m_bsMultiRecordMask[channel]) - return RecordGroup::Group1; - if(m_bsMultiSplitRecordMask[channel]) - return RecordGroup::Group2; - return RecordGroup::NoGroup; + + return m_multiRecordGroup[channel]; } @@ -1405,8 +1402,10 @@ { if(channel >= GetNumChannels()) return; - m_bsMultiRecordMask.set(channel, recordGroup == RecordGroup::Group1); - m_bsMultiSplitRecordMask.set(channel, recordGroup == RecordGroup::Group2); + if(channel >= m_multiRecordGroup.size()) + m_multiRecordGroup.resize(channel + 1); + + m_multiRecordGroup[channel] = recordGroup; } @@ -1414,22 +1413,19 @@ { if(channel >= GetNumChannels()) return; - if(recordGroup == RecordGroup::Group1) - { - m_bsMultiRecordMask.flip(channel); - m_bsMultiSplitRecordMask.reset(channel); - } else if(recordGroup == RecordGroup::Group2) - { - m_bsMultiRecordMask.reset(channel); - m_bsMultiSplitRecordMask.flip(channel); - } + if(channel >= m_multiRecordGroup.size()) + m_multiRecordGroup.resize(channel + 1); + + if(m_multiRecordGroup[channel] == recordGroup) + m_multiRecordGroup[channel] = RecordGroup::NoGroup; + else + m_multiRecordGroup[channel] = recordGroup; } void CModDoc::ReinitRecordState() { - m_bsMultiRecordMask.reset(); - m_bsMultiSplitRecordMask.reset(); + m_multiRecordGroup.clear(); } Modified: trunk/OpenMPT/mptrack/Moddoc.h ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h Tue Oct 15 23:03:59 2024 (r21829) +++ trunk/OpenMPT/mptrack/Moddoc.h Tue Oct 15 23:09:43 2024 (r21830) @@ -151,8 +151,7 @@ std::array<std::bitset<128>, 16> m_midiPlayingNotes; std::bitset<16> m_midiSustainActive; - std::bitset<MAX_BASECHANNELS> m_bsMultiRecordMask; - std::bitset<MAX_BASECHANNELS> m_bsMultiSplitRecordMask; + std::vector<RecordGroup> m_multiRecordGroup; protected: // create from serialization only CModDoc(); |
From: <sv...@op...> - 2024-10-15 21:04:06
|
Author: sagamusix Date: Tue Oct 15 23:03:59 2024 New Revision: 21829 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21829 Log: [Ref] Remove dead, incorrect code. It should never be possible that both record group bits are set at once. Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/mptrack/Moddoc.h Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Tue Oct 15 22:15:40 2024 (r21828) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Tue Oct 15 23:03:59 2024 (r21829) @@ -359,7 +359,7 @@ m_ModDoc->MuteChannel(state.sourceChn, state.memoryMute); break; case kRecordSelect: - m_ModDoc->ReinitRecordState(true); + m_ModDoc->ReinitRecordState(); for(auto &state : m_states) m_ModDoc->SetChannelRecordGroup(state.sourceChn, static_cast<RecordGroup>(state.memoryRecordGroup)); break; Modified: trunk/OpenMPT/mptrack/Moddoc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp Tue Oct 15 22:15:40 2024 (r21828) +++ trunk/OpenMPT/mptrack/Moddoc.cpp Tue Oct 15 23:03:59 2024 (r21829) @@ -1426,17 +1426,10 @@ } -void CModDoc::ReinitRecordState(bool unselect) +void CModDoc::ReinitRecordState() { - if(unselect) - { - m_bsMultiRecordMask.reset(); - m_bsMultiSplitRecordMask.reset(); - } else - { - m_bsMultiRecordMask.set(); - m_bsMultiSplitRecordMask.set(); - } + m_bsMultiRecordMask.reset(); + m_bsMultiSplitRecordMask.reset(); } Modified: trunk/OpenMPT/mptrack/Moddoc.h ============================================================================== --- trunk/OpenMPT/mptrack/Moddoc.h Tue Oct 15 22:15:40 2024 (r21828) +++ trunk/OpenMPT/mptrack/Moddoc.h Tue Oct 15 23:03:59 2024 (r21829) @@ -283,7 +283,7 @@ RecordGroup GetChannelRecordGroup(CHANNELINDEX channel) const; void SetChannelRecordGroup(CHANNELINDEX channel, RecordGroup recordGroup); void ToggleChannelRecordGroup(CHANNELINDEX channel, RecordGroup recordGroup); - void ReinitRecordState(bool unselect = true); + void ReinitRecordState(); CHANNELINDEX GetNumChannels() const noexcept { return m_SndFile.GetNumChannels(); } UINT GetPatternSize(PATTERNINDEX nPat) const; |
From: <sv...@op...> - 2024-10-15 20:15:51
|
Author: sagamusix Date: Tue Oct 15 22:15:40 2024 New Revision: 21828 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21828 Log: [Fix] Fix compile error. Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Tue Oct 15 21:51:18 2024 (r21827) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Tue Oct 15 22:15:40 2024 (r21828) @@ -838,7 +838,7 @@ { CRect rect; CHANNELINDEX chn = ButtonHit(point, &rect); - if(m_ModDoc != nullptr && chn != CHANNELINDEX_INVALID)) + if(m_ModDoc != nullptr && chn != CHANNELINDEX_INVALID) { ClientToScreen(&point); m_quickChannelProperties->Show(m_ModDoc, m_states[chn].sourceChn, point); |
From: <sv...@op...> - 2024-10-15 19:51:24
|
Author: sagamusix Date: Tue Oct 15 21:51:18 2024 New Revision: 21827 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21827 Log: [Ref] Silence false-positive warning. Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Tue Oct 15 21:24:18 2024 (r21826) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Tue Oct 15 21:51:18 2024 (r21827) @@ -836,9 +836,9 @@ void CChannelManagerDlg::OnMButtonDown(UINT /*nFlags*/, CPoint point) { - CHANNELINDEX chn; CRect rect; - if(m_ModDoc != nullptr && (chn = ButtonHit(point, &rect) != CHANNELINDEX_INVALID)) + CHANNELINDEX chn = ButtonHit(point, &rect); + if(m_ModDoc != nullptr && chn != CHANNELINDEX_INVALID)) { ClientToScreen(&point); m_quickChannelProperties->Show(m_ModDoc, m_states[chn].sourceChn, point); |
From: <sv...@op...> - 2024-10-15 19:24:25
|
Author: sagamusix Date: Tue Oct 15 21:24:18 2024 New Revision: 21826 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21826 Log: [Fix] S3M: Do not run combined slides (Kxy / Lxy) on first tick for ST3-made S3Ms (https://bugs.openmpt.org/view.php?id=1828). [Mod] OpenMPT: Version is now 1.32.00.28 Modified: trunk/OpenMPT/common/versionNumber.h trunk/OpenMPT/mptrack/dlg_misc.cpp trunk/OpenMPT/soundlib/Load_s3m.cpp trunk/OpenMPT/soundlib/Snd_defs.h trunk/OpenMPT/soundlib/Snd_fx.cpp trunk/OpenMPT/soundlib/Sndfile.cpp Modified: trunk/OpenMPT/common/versionNumber.h ============================================================================== --- trunk/OpenMPT/common/versionNumber.h Tue Oct 15 20:43:04 2024 (r21825) +++ trunk/OpenMPT/common/versionNumber.h Tue Oct 15 21:24:18 2024 (r21826) @@ -16,4 +16,4 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 32 #define VER_MINOR 00 -#define VER_MINORMINOR 27 +#define VER_MINORMINOR 28 Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Tue Oct 15 20:43:04 2024 (r21825) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Tue Oct 15 21:24:18 2024 (r21826) @@ -731,6 +731,7 @@ case kContinueSampleWithoutInstr: desc = _T("New note without instrument number does not play looped samples from the start"); break; case kMIDINotesFromChannelPlugin: desc = _T("MIDI notes can be sent to channel plugins"); break; case kITDoublePortamentoSlides: desc = _T("Parameters of conflicting volume and effect column portamento commands may overwrite each other"); break; + case kS3MIgnoreCombinedFineSlides: desc =_T("Ignore combined fine slides (Kxy / Lxy)"); break; default: MPT_ASSERT_NOTREACHED(); } Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_s3m.cpp Tue Oct 15 20:43:04 2024 (r21825) +++ trunk/OpenMPT/soundlib/Load_s3m.cpp Tue Oct 15 21:24:18 2024 (r21826) @@ -572,7 +572,6 @@ // All Scream Tracker versions except for some probably early revisions of Scream Tracker 3.00 write GUS addresses. GUS support might not have existed at that point (1992). // Hence if a file claims to be written with ST3 (but not ST3.00), but has no GUS addresses, we deduce that it must be written by some other software (e.g. some PSM -> S3M conversions) isST3 = false; - MPT_UNUSED(isST3); m_modFormat.madeWithTracker = UL_("Unknown"); // Check these only after we are certain that it can't be ST3.01 because that version doesn't sanitize the ultraClicks value yet if(fileHeader.cwtv == S3MFileHeader::trkST3_01 && fileHeader.ultraClicks == 0) @@ -598,6 +597,8 @@ if(useGUS) m_nSamplePreAmp = 48; } + if(isST3) + m_playBehaviour.set(kS3MIgnoreCombinedFineSlides); if(anyADPCM) m_modFormat.madeWithTracker += UL_(" (ADPCM packed)"); Modified: trunk/OpenMPT/soundlib/Snd_defs.h ============================================================================== --- trunk/OpenMPT/soundlib/Snd_defs.h Tue Oct 15 20:43:04 2024 (r21825) +++ trunk/OpenMPT/soundlib/Snd_defs.h Tue Oct 15 21:24:18 2024 (r21826) @@ -599,6 +599,7 @@ kContinueSampleWithoutInstr, // FTM: A note without instrument number continues looped samples with the new pitch instead of retriggering them kMIDINotesFromChannelPlugin, // Behaviour before OpenMPT 1.26: Channel plugin can be used to send MIDI notes kITDoublePortamentoSlides, // IT only reads parameters once per row, so if two commands sharing effect parameters are found in the two effect columns, they influence each other + kS3MIgnoreCombinedFineSlides, // S3M commands Kxy and Lxy ignore fine slides // Add new play behaviours here. Modified: trunk/OpenMPT/soundlib/Snd_fx.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Snd_fx.cpp Tue Oct 15 20:43:04 2024 (r21825) +++ trunk/OpenMPT/soundlib/Snd_fx.cpp Tue Oct 15 21:24:18 2024 (r21826) @@ -1208,7 +1208,9 @@ case CMD_VIBRATOVOL: if(m.param || (GetType() != MOD_TYPE_MOD)) { - for(uint32 i = 0; i < numTicks; i++) + // ST3 compatibility: Do not run combined slides (Kxy / Lxy) on first tick + // Test cases: NoCombinedSlidesOnFirstTick-Normal.s3m, NoCombinedSlidesOnFirstTick-Fast.s3m + for(uint32 i = (m_playBehaviour[kS3MIgnoreCombinedFineSlides] ? 1 : 0); i < numTicks; i++) { chn.isFirstTick = (i == 0); VolumeSlide(chn, m.param); @@ -3364,7 +3366,14 @@ // Tone-Portamento + Volume Slide case CMD_TONEPORTAVOL: - if ((param) || (GetType() != MOD_TYPE_MOD)) VolumeSlide(chn, static_cast<ModCommand::PARAM>(param)); + if(param || GetType() != MOD_TYPE_MOD) + { + // ST3 compatibility: Do not run combined slides (Kxy / Lxy) on first tick + // Test cases: NoCombinedSlidesOnFirstTick-Normal.s3m, NoCombinedSlidesOnFirstTick-Fast.s3m + + if(!chn.isFirstTick || !m_playBehaviour[kS3MIgnoreCombinedFineSlides]) + VolumeSlide(chn, static_cast<ModCommand::PARAM>(param)); + } TonePortamento(nChn, 0); break; @@ -3375,7 +3384,13 @@ // Vibrato + Volume Slide case CMD_VIBRATOVOL: - if ((param) || (GetType() != MOD_TYPE_MOD)) VolumeSlide(chn, static_cast<ModCommand::PARAM>(param)); + if(param || GetType() != MOD_TYPE_MOD) + { + // ST3 compatibility: Do not run combined slides (Kxy / Lxy) on first tick + // Test cases: NoCombinedSlidesOnFirstTick-Normal.s3m, NoCombinedSlidesOnFirstTick-Fast.s3m + if(!chn.isFirstTick || !m_playBehaviour[kS3MIgnoreCombinedFineSlides]) + VolumeSlide(chn, static_cast<ModCommand::PARAM>(param)); + } Vibrato(chn, 0); break; Modified: trunk/OpenMPT/soundlib/Sndfile.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp Tue Oct 15 20:43:04 2024 (r21825) +++ trunk/OpenMPT/soundlib/Sndfile.cpp Tue Oct 15 21:24:18 2024 (r21826) @@ -1262,6 +1262,7 @@ playBehaviour.set(kOPLNoteOffOnNoteChange); playBehaviour.set(kApplyUpperPeriodLimit); playBehaviour.set(kST3TonePortaWithAdlibNote); + playBehaviour.set(kS3MIgnoreCombinedFineSlides); break; case MOD_TYPE_MOD: @@ -1330,6 +1331,8 @@ // Default behaviour was chosen to follow GUS, so kST3PortaSampleChange is enabled and kST3SampleSwap is disabled. // For SoundBlaster behaviour, those two flags would need to be swapped. playBehaviour.reset(kST3SampleSwap); + // Most trackers supporting the S3M format, including all OpenMPT versions up to now, support fine slides with Kxy / Lxy, so only enable this quirk for files made with ST3. + playBehaviour.reset(kS3MIgnoreCombinedFineSlides); break; case MOD_TYPE_XM: |
From: <sv...@op...> - 2024-10-15 18:43:11
|
Author: sagamusix Date: Tue Oct 15 20:43:04 2024 New Revision: 21825 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21825 Log: [Mod] SymMOD: Ignore unknown hunks, as that's what Symphonie does as well. Fixes reading of Natsh1.SymMOD, which has garbage at the end of the file. Modified: trunk/OpenMPT/soundlib/Load_symmod.cpp Modified: trunk/OpenMPT/soundlib/Load_symmod.cpp ============================================================================== --- trunk/OpenMPT/soundlib/Load_symmod.cpp Tue Oct 15 20:33:30 2024 (r21824) +++ trunk/OpenMPT/soundlib/Load_symmod.cpp Tue Oct 15 20:43:04 2024 (r21825) @@ -1044,6 +1044,7 @@ uint16 sampleBoost = 2500; bool isSymphoniePro = false; bool externalSamples = false; + bool unknownHunks = false; std::vector<SymPosition> positions; std::vector<SymSequence> sequences; std::vector<SymEvent> patternData; @@ -1197,9 +1198,10 @@ file.Skip(file.ReadUint32BE()); break; - // Unrecognized chunk/value type + // Unrecognized chunk/value type (e.g. garbage at the end of Natsh1.SymMOD) default: - return false; + unknownHunks = true; + break; } } @@ -1207,6 +1209,8 @@ return false; if((loadFlags & loadPatternData) && (positions.empty() || patternData.empty() || sequences.empty())) return false; + if(unknownHunks) + AddToLog(LogWarning, U_("Unknown hunks were found and ignored.")); // Let's hope noone is going to use the 256th instrument ;) if(instruments.size() >= MAX_INSTRUMENTS) |
From: <sv...@op...> - 2024-10-15 18:33:44
|
Author: sagamusix Date: Tue Oct 15 20:33:30 2024 New Revision: 21824 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21824 Log: [Mod] Channel Manager Dialog: It is now possible to interact with channels that have been marked as being deleted. [Ref] Simplify ChannelManagerDlg logic. No longer hardcode MAX_BASECHANNELS number of channel states, keep all channel state data in one struct instead of individual arrays + dereferencing the "pattern" array for no good reason, remove more dead code, etc... Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp trunk/OpenMPT/mptrack/ChannelManagerDlg.h trunk/OpenMPT/mptrack/mptrack.rc Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp ============================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Tue Oct 15 20:06:13 2024 (r21823) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.cpp Tue Oct 15 20:33:30 2024 (r21824) @@ -13,6 +13,7 @@ #include "Mainfrm.h" #include "Moddoc.h" #include "MPTrackUtil.h" +#include "PatternEditorDialogs.h" #include "resource.h" #include "UpdateHints.h" #include "../common/mptStringBuffer.h" @@ -68,21 +69,21 @@ void CChannelManagerDlg::SetDocument(CModDoc *modDoc) { - if(modDoc != m_ModDoc) - { - m_ModDoc = modDoc; - ResetState(true, true, true, true, false); - if(m_show) + if(modDoc == m_ModDoc) + return; + + m_ModDoc = modDoc; + ResetState(true, true, true); + if(m_show) + { + if(m_ModDoc) + { + ResizeWindow(); + ShowWindow(SW_SHOWNOACTIVATE); // In case the window was hidden because no module was loaded + InvalidateRect(m_drawableArea, FALSE); + } else { - if(m_ModDoc) - { - ResizeWindow(); - ShowWindow(SW_SHOWNOACTIVATE); // In case the window was hidden because no module was loaded - InvalidateRect(m_drawableArea, FALSE); - } else - { - ShowWindow(SW_HIDE); - } + ShowWindow(SW_HIDE); } } } @@ -98,10 +99,18 @@ return; if(!hint.ToType<GeneralHint>().GetType()[HINT_MODCHANNELS | HINT_MODGENERAL | HINT_MODTYPE | HINT_MPTOPTIONS]) return; + + const size_t oldNumChannels = m_states.size(); + m_states.resize(m_ModDoc->GetNumChannels()); + for(size_t chn = oldNumChannels; chn < m_states.size(); chn++) + { + m_states[chn].sourceChn = static_cast<CHANNELINDEX>(chn); + } + ResizeWindow(); InvalidateRect(nullptr, FALSE); - if(hint.ToType<GeneralHint>().GetType()[HINT_MODCHANNELS] && m_quickChannelProperties.m_hWnd && pHint != &m_quickChannelProperties) - m_quickChannelProperties.UpdateDisplay(); + if(hint.ToType<GeneralHint>().GetType()[HINT_MODCHANNELS] && m_quickChannelProperties->m_hWnd && pHint != m_quickChannelProperties.get()) + m_quickChannelProperties->UpdateDisplay(); } void CChannelManagerDlg::Show() @@ -119,7 +128,7 @@ { if(m_hWnd != nullptr && m_show) { - ResetState(true, true, true, true, true); + ResetState(true, true, true); ShowWindow(SW_HIDE); m_show = false; } @@ -127,16 +136,9 @@ CChannelManagerDlg::CChannelManagerDlg() - : m_buttonHeight(CM_BT_HEIGHT) + : m_quickChannelProperties{std::make_unique<QuickChannelProperties>()} + , m_buttonHeight{CM_BT_HEIGHT} { - for(CHANNELINDEX chn = 0; chn < MAX_BASECHANNELS; chn++) - { - pattern[chn] = chn; - memory[0][chn] = 0; - memory[1][chn] = 0; - memory[2][chn] = 0; - memory[3][chn] = chn; - } } CChannelManagerDlg::~CChannelManagerDlg() @@ -159,7 +161,7 @@ tie.iImage = -1; tie.pszText = const_cast<LPTSTR>(_T("Solo/Mute")); TabCtrl_InsertItem(menu, kSoloMute, &tie); - tie.pszText = const_cast<LPTSTR>(_T("Record select")); + tie.pszText = const_cast<LPTSTR>(_T("Record Select")); TabCtrl_InsertItem(menu, kRecordSelect, &tie); tie.pszText = const_cast<LPTSTR>(_T("Plugins")); TabCtrl_InsertItem(menu, kPluginState, &tie); @@ -170,6 +172,8 @@ m_buttonHeight = MulDiv(CM_BT_HEIGHT, Util::GetDPIy(m_hWnd), 96); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON1), SW_HIDE); + ResetState(true, true, true, true); + return TRUE; } @@ -177,29 +181,25 @@ { if(!m_ModDoc) return; - CHANNELINDEX numChannels, newMemory[4][MAX_BASECHANNELS]; + std::vector<State> newStates; std::vector<CHANNELINDEX> newChnOrder; + newStates.reserve(m_ModDoc->GetNumChannels()); newChnOrder.reserve(m_ModDoc->GetNumChannels()); // Count new number of channels, copy pattern pointers & manager internal store memory - numChannels = 0; - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) + for(const auto &state : m_states) { - if(!removed[pattern[chn]]) + if(!state.removed) { - newMemory[0][numChannels] = memory[0][numChannels]; - newMemory[1][numChannels] = memory[1][numChannels]; - newMemory[2][numChannels] = memory[2][numChannels]; - newChnOrder.push_back(pattern[chn]); - numChannels++; + newStates.push_back(state); + newChnOrder.push_back(state.sourceChn); } } BeginWaitCursor(); - //Creating new order-vector for ReArrangeChannels. CriticalSection cs; - if(m_ModDoc->ReArrangeChannels(newChnOrder) != numChannels) + if(m_ModDoc->ReArrangeChannels(newChnOrder) != newChnOrder.size()) { cs.Leave(); EndWaitCursor(); @@ -207,22 +207,16 @@ } // Update manager internal store memory - for(CHANNELINDEX chn = 0; chn < numChannels; chn++) + m_states = std::move(newStates); + for(CHANNELINDEX chn = 0; chn < m_states.size(); chn++) { - CHANNELINDEX newChn = newChnOrder[chn]; - if(chn != newChn) - { - memory[0][chn] = newMemory[0][newChn]; - memory[1][chn] = newMemory[1][newChn]; - memory[2][chn] = newMemory[2][newChn]; - } - memory[3][chn] = chn; + m_states[chn].sourceChn = chn; } cs.Leave(); EndWaitCursor(); - ResetState(true, true, true, true, true); + ResetState(true, true, true, true); // Update document & windows m_ModDoc->SetModified(); @@ -236,7 +230,7 @@ void CChannelManagerDlg::OnClose() { if(m_bkgnd) DeleteBitmap(m_bkgnd); - ResetState(true, true, true, true, true); + ResetState(true, true, true, true); m_bkgnd = nullptr; m_show = false; @@ -245,222 +239,145 @@ void CChannelManagerDlg::OnSelectAll() { - select.set(); + for(auto &state : m_states) + state.select = true; InvalidateRect(m_drawableArea, FALSE); } void CChannelManagerDlg::OnInvert() { - select.flip(); + for(auto &state : m_states) + state.select = !state.select; InvalidateRect(m_drawableArea, FALSE); } -void CChannelManagerDlg::OnAction1() +void CChannelManagerDlg::OnAction(uint8 action) { - if(m_ModDoc) - { - int nbOk = 0, nbSelect = 0; - - switch(m_currentTab) - { - case kSoloMute: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - CHANNELINDEX sourceChn = pattern[chn]; - if(!removed[sourceChn]) - { - m_ModDoc->MuteChannel(sourceChn, !select[sourceChn]); - } - } - break; - case kRecordSelect: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - CHANNELINDEX sourceChn = pattern[chn]; - if(!removed[sourceChn]) - { - if(select[sourceChn]) - nbSelect++; - if(select[sourceChn] && m_ModDoc->GetChannelRecordGroup(sourceChn) == RecordGroup::Group1) - nbOk++; - } - } - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - CHANNELINDEX sourceChn = pattern[chn]; - if(!removed[sourceChn] && select[sourceChn]) - { - if(select[sourceChn] && nbSelect != nbOk && m_ModDoc->GetChannelRecordGroup(sourceChn) != RecordGroup::Group1) - m_ModDoc->SetChannelRecordGroup(sourceChn, RecordGroup::Group1); - else if(nbSelect == nbOk) - m_ModDoc->SetChannelRecordGroup(sourceChn, RecordGroup::NoGroup); - } - } - break; - case kPluginState: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - CHANNELINDEX sourceChn = pattern[chn]; - if(select[sourceChn] && !removed[sourceChn]) - m_ModDoc->NoFxChannel(sourceChn, false); - } - break; - case kReorderRemove: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - CHANNELINDEX sourceChn = pattern[chn]; - if(select[sourceChn]) - removed[sourceChn] = !removed[sourceChn]; - } - break; - default: - break; - } + if(!m_show || m_ModDoc == nullptr) + return; + int numSelectedAndMatching = 0, numSelected = 0; + const auto recordGroup = (action == 1 ? RecordGroup::Group1 : RecordGroup::Group2); - ResetState(); - - m_ModDoc->UpdateAllViews(nullptr, GeneralHint().Channels(), this); - InvalidateRect(m_drawableArea, FALSE); - } -} - -void CChannelManagerDlg::OnAction2() -{ - if(m_ModDoc) + switch(m_currentTab) { - - int nbOk = 0, nbSelect = 0; - - switch(m_currentTab) - { - case kSoloMute: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - CHANNELINDEX sourceChn = pattern[chn]; - if(!removed[sourceChn]) - { - if(select[sourceChn]) - m_ModDoc->MuteChannel(sourceChn, !m_ModDoc->IsChannelMuted(sourceChn)); - } - } - break; - case kRecordSelect: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - CHANNELINDEX sourceChn = pattern[chn]; - if(!removed[sourceChn]) - { - if(select[sourceChn]) - nbSelect++; - if(select[sourceChn] && m_ModDoc->GetChannelRecordGroup(sourceChn) == RecordGroup::Group2) - nbOk++; - } - } - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) + case kSoloMute: + for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) + { + CHANNELINDEX sourceChn = m_states[chn].sourceChn; + if(action == 1) + m_ModDoc->MuteChannel(sourceChn, !m_states[chn].select); + else if(m_states[chn].select) + m_ModDoc->MuteChannel(sourceChn, !m_ModDoc->IsChannelMuted(sourceChn)); + } + break; + case kRecordSelect: + for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) + { + CHANNELINDEX sourceChn = m_states[chn].sourceChn; + if(m_states[chn].select) + numSelected++; + if(m_states[chn].select && m_ModDoc->GetChannelRecordGroup(sourceChn) == recordGroup) + numSelectedAndMatching++; + } + for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) + { + if(m_states[chn].select) { - CHANNELINDEX sourceChn = pattern[chn]; - if(!removed[sourceChn] && select[sourceChn]) - { - if(select[sourceChn] && nbSelect != nbOk && m_ModDoc->GetChannelRecordGroup(sourceChn) != RecordGroup::Group2) - m_ModDoc->SetChannelRecordGroup(sourceChn, RecordGroup::Group2); - else if(nbSelect == nbOk) - m_ModDoc->SetChannelRecordGroup(sourceChn, RecordGroup::NoGroup); - } + CHANNELINDEX sourceChn = m_states[chn].sourceChn; + if(numSelected != numSelectedAndMatching && m_ModDoc->GetChannelRecordGroup(sourceChn) != recordGroup) + m_ModDoc->SetChannelRecordGroup(sourceChn, recordGroup); + else if(numSelected == numSelectedAndMatching) + m_ModDoc->SetChannelRecordGroup(sourceChn, RecordGroup::NoGroup); } - break; - case kPluginState: + } + break; + case kPluginState: + for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) + { + CHANNELINDEX sourceChn = m_states[chn].sourceChn; + if(m_states[chn].select) + m_ModDoc->NoFxChannel(sourceChn, action == 2); + } + break; + case kReorderRemove: + if(action == 1) + { for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) { - CHANNELINDEX sourceChn = pattern[chn]; - if(select[sourceChn] && !removed[sourceChn]) - m_ModDoc->NoFxChannel(sourceChn, true); + if(m_states[chn].select) + m_states[chn].removed = !m_states[chn].removed; } - break; - case kReorderRemove: - ResetState(false, false, false, false, true); - break; - default: - break; - } + } else + { + ResetState(false, false, false, true); + } + break; + } - if(m_currentTab != 3) ResetState(); + ResetState(); - m_ModDoc->UpdateAllViews(nullptr, GeneralHint().Channels(), this); - InvalidateRect(m_drawableArea, FALSE); - } + m_ModDoc->UpdateAllViews(nullptr, GeneralHint().Channels(), this); + InvalidateRect(m_drawableArea, FALSE); } -void CChannelManagerDlg::OnStore(void) + +void CChannelManagerDlg::OnStore() { if(!m_show || m_ModDoc == nullptr) - { return; - } switch(m_currentTab) { case kSoloMute: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - CHANNELINDEX sourceChn = pattern[chn]; - memory[0][sourceChn] = m_ModDoc->IsChannelMuted(sourceChn) ? 1 : 0; - } + for(auto &state : m_states) + state.memoryMute = m_ModDoc->IsChannelMuted(state.sourceChn); break; case kRecordSelect: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - memory[1][chn] = static_cast<uint8>(m_ModDoc->GetChannelRecordGroup(pattern[chn])); + for(auto &state : m_states) + state.memoryRecordGroup = static_cast<uint8>(m_ModDoc->GetChannelRecordGroup(state.sourceChn)); break; case kPluginState: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - memory[2][chn] = m_ModDoc->IsChannelNoFx(pattern[chn]); + for(auto &state : m_states) + state.memoryNoFx = m_ModDoc->IsChannelNoFx(state.sourceChn); break; case kReorderRemove: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - memory[3][chn] = pattern[chn]; - break; default: break; } } -void CChannelManagerDlg::OnRestore(void) +void CChannelManagerDlg::OnRestore() { if(!m_show || m_ModDoc == nullptr) - { return; - } switch(m_currentTab) { case kSoloMute: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - CHANNELINDEX sourceChn = pattern[chn]; - m_ModDoc->MuteChannel(sourceChn, memory[0][chn] != 0); - } + for(auto &state : m_states) + m_ModDoc->MuteChannel(state.sourceChn, state.memoryMute); break; case kRecordSelect: m_ModDoc->ReinitRecordState(true); - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - m_ModDoc->SetChannelRecordGroup(chn, static_cast<RecordGroup>(memory[1][chn])); - } + for(auto &state : m_states) + m_ModDoc->SetChannelRecordGroup(state.sourceChn, static_cast<RecordGroup>(state.memoryRecordGroup)); break; case kPluginState: - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - m_ModDoc->NoFxChannel(pattern[chn], memory[2][chn] != 0); + for(auto &state : m_states) + m_ModDoc->NoFxChannel(state.sourceChn, state.memoryNoFx); break; case kReorderRemove: for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - pattern[chn] = memory[3][chn]; - ResetState(false, false, false, false, true); + m_states[chn].sourceChn = chn; + ResetState(false, false, false, true); break; default: break; } - if(m_currentTab != 3) ResetState(); + if(m_currentTab != kReorderRemove) + ResetState(); m_ModDoc->UpdateAllViews(nullptr, GeneralHint().Channels(), this); InvalidateRect(m_drawableArea, FALSE); @@ -475,29 +392,29 @@ switch(m_currentTab) { case kSoloMute: - SetDlgItemText(IDC_BUTTON5, _T("Solo")); - SetDlgItemText(IDC_BUTTON6, _T("Mute")); + SetDlgItemText(IDC_BUTTON5, _T("S&olo")); + SetDlgItemText(IDC_BUTTON6, _T("M&ute")); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON5),SW_SHOW); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON6),SW_SHOW); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON1),SW_HIDE); break; case kRecordSelect: - SetDlgItemText(IDC_BUTTON5, _T("Instrument 1")); - SetDlgItemText(IDC_BUTTON6, _T("Instrument 2")); + SetDlgItemText(IDC_BUTTON5, _T("Instrument &1")); + SetDlgItemText(IDC_BUTTON6, _T("Instrument &2")); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON5),SW_SHOW); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON6),SW_SHOW); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON1),SW_HIDE); break; case kPluginState: - SetDlgItemText(IDC_BUTTON5, _T("Enable FX")); - SetDlgItemText(IDC_BUTTON6, _T("Disable FX")); + SetDlgItemText(IDC_BUTTON5, _T("&Enable FX")); + SetDlgItemText(IDC_BUTTON6, _T("&Disable FX")); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON5),SW_SHOW); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON6),SW_SHOW); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON1),SW_HIDE); break; case kReorderRemove: - SetDlgItemText(IDC_BUTTON5, _T("Remove")); - SetDlgItemText(IDC_BUTTON6, _T("Cancel All")); + SetDlgItemText(IDC_BUTTON5, _T("R&emove")); + SetDlgItemText(IDC_BUTTON6, _T("Ca&ncel All")); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON5),SW_SHOW); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON6),SW_SHOW); ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BUTTON1),SW_SHOW); @@ -589,7 +506,7 @@ const int chnSizeX = m_drawableArea.Width() / CM_NB_COLS; const int chnSizeY = m_buttonHeight; - if(m_currentTab == 3 && m_moveRect && m_bkgnd) + if(m_currentTab == kReorderRemove && m_moveRect && m_bkgnd) { // Only draw channels to be moved around HDC bdc = ::CreateCompatibleDC(pDC.hdc); @@ -602,12 +519,11 @@ ftn.SourceConstantAlpha = 192; ftn.AlphaFormat = 0; - for(CHANNELINDEX chn = 0; chn < channels; chn++) + for(const auto &state : m_states) { - CHANNELINDEX sourceChn = pattern[chn]; - if(select[sourceChn]) + if(state.select) { - CRect btn = move[sourceChn]; + CRect btn = state.move; btn.DeflateRect(3, 3, 0, 0); AlphaBlend(pDC.hdc, btn.left + m_moveX - m_downX, btn.top + m_moveY - m_downY, btn.Width(), btn.Height(), bdc, @@ -652,15 +568,9 @@ uint32 col = 0, row = 0; const CSoundFile &sndFile = m_ModDoc->GetSoundFile(); CString s; - for(CHANNELINDEX chn = 0; chn < channels; chn++, col++) + for(const auto &state : m_states) { - if(col >= CM_NB_COLS) - { - col = 0; - row++; - } - - const CHANNELINDEX sourceChn = pattern[chn]; + const CHANNELINDEX sourceChn = state.sourceChn; const auto &chnSettings = sndFile.ChnSettings[sourceChn]; if(!chnSettings.szName.empty()) @@ -674,13 +584,19 @@ btn.right = btn.left + chnSizeX - borderX; btn.top = client.top + row * chnSizeY + borderY; btn.bottom = btn.top + chnSizeY - borderY; + col++; + if(col >= CM_NB_COLS) + { + col = 0; + row++; + } if(!CRect{}.IntersectRect(&pDC.rcPaint, &btn)) continue; // Button - const bool activate = select[sourceChn]; - const bool enable = !removed[sourceChn]; + const bool activate = state.select; + const bool enable = !state.removed; auto btnAdjusted = btn; // Without border ::DrawEdge(dc, btnAdjusted, enable ? EDGE_RAISED : EDGE_SUNKEN, BF_RECT | BF_MIDDLE | BF_ADJUST); if(activate) @@ -740,7 +656,7 @@ color = chnSettings.dwFlags[CHN_NOFX] ? redBrush : greenBrush; break; case kReorderRemove: - color = removed[sourceChn] ? redBrush : greenBrush; + color = state.removed ? redBrush : greenBrush; break; } ::SetDCBrushColor(dc, color); @@ -760,7 +676,7 @@ } -bool CChannelManagerDlg::ButtonHit(CPoint point, CHANNELINDEX *id, CRect *invalidate) const +CHANNELINDEX CChannelManagerDlg::ButtonHit(CPoint point, CRect *invalidate) const { const CRect &client = m_drawableArea; @@ -779,7 +695,6 @@ CHANNELINDEX n = static_cast<CHANNELINDEX>(y * nColns + x); if(n < m_ModDoc->GetNumChannels()) { - if(id) *id = n; if(invalidate) { invalidate->left = client.left + x * dx; @@ -787,25 +702,25 @@ invalidate->top = client.top + y * dy; invalidate->bottom = invalidate->top + dy; } - return true; + return n; } } - return false; + return CHANNELINDEX_INVALID; } -void CChannelManagerDlg::ResetState(bool bSelection, bool bMove, bool bButton, bool bInternal, bool bOrder) +void CChannelManagerDlg::ResetState(bool bSelection, bool bMove, bool bInternal, bool bOrder) { - for(CHANNELINDEX chn = 0; chn < MAX_BASECHANNELS; chn++) + size_t oldSize = m_states.size(); + m_states.resize(m_ModDoc ? m_ModDoc->GetNumChannels() : 0); + for(CHANNELINDEX chn = 0; chn < m_states.size(); chn++) { if(bSelection) - select[pattern[chn]] = false; - if(bButton) - state[pattern[chn]] = false; - if(bOrder) + m_states[chn].select = false; + if(bOrder || chn > oldSize) { - pattern[chn] = chn; - removed[chn] = false; + m_states[chn].sourceChn = chn; + m_states[chn].removed = false; } } if(bMove || bInternal) @@ -813,7 +728,8 @@ m_leftButton = false; m_rightButton = false; } - if(bMove) m_moveRect = false; + if(bMove) + m_moveRect = false; } @@ -833,39 +749,41 @@ void CChannelManagerDlg::OnLButtonUp(UINT /*nFlags*/,CPoint point) { ReleaseCapture(); - if(!m_hWnd || m_show == false) return; + if(!m_hWnd || !m_show) + return; if(m_moveRect && m_ModDoc) { - CHANNELINDEX dropChn = 0; CRect dropRect; - if(ButtonHit(point, &dropChn, &dropRect)) + CHANNELINDEX dropChn = ButtonHit(point, &dropRect); + if(dropChn != CHANNELINDEX_INVALID) { // Rearrange channels - const auto IsSelected = std::bind(&decltype(select)::test, &select, std::placeholders::_1); - const auto numChannels = m_ModDoc->GetNumChannels(); if(point.x > dropRect.left + dropRect.Width() / 2 && dropChn < numChannels) dropChn++; - std::vector<CHANNELINDEX> newOrder{ pattern.begin(), pattern.begin() + numChannels }; - // How many selected channels are there before the drop target? - // cppcheck false-positive - // cppcheck-suppress danglingTemporaryLifetime - const CHANNELINDEX selectedBeforeDropChn = static_cast<CHANNELINDEX>(std::count_if(pattern.begin(), pattern.begin() + dropChn, IsSelected)); - dropChn -= selectedBeforeDropChn; + std::vector<State> states; + CHANNELINDEX selectedBeforeDropChn = 0; + for(CHANNELINDEX chn = 0; chn < numChannels; chn++) + { + if(m_states[chn].select) + { + states.push_back(m_states[chn]); + states.back().select = false; + if(chn < dropChn) + selectedBeforeDropChn++; + } + } + // Remove all selected channels from the order - newOrder.erase(std::remove_if(newOrder.begin(), newOrder.end(), IsSelected), newOrder.end()); - const CHANNELINDEX numSelected = static_cast<CHANNELINDEX>(numChannels - newOrder.size()); + const auto IsSelected = [](const State &state) { return state.select; }; + m_states.erase(std::remove_if(m_states.begin(), m_states.end(), IsSelected), m_states.end()); // Then insert them at the drop position - newOrder.insert(newOrder.begin() + dropChn, numSelected, PATTERNINDEX_INVALID); - std::copy_if(pattern.begin(), pattern.begin() + numChannels, newOrder.begin() + dropChn, IsSelected); - - std::copy(newOrder.begin(), newOrder.begin() + numChannels, pattern.begin()); - select.reset(); + m_states.insert(m_states.begin() + dropChn - selectedBeforeDropChn, states.begin(), states.end()); } else { - ResetState(true, false, false, false, false); + ResetState(true, false, false, false); } m_moveRect = false; @@ -874,9 +792,6 @@ } m_leftButton = false; - - for(CHANNELINDEX chn : pattern) - state[chn] = false; } void CChannelManagerDlg::OnLButtonDown(UINT nFlags,CPoint point) @@ -884,7 +799,8 @@ if(!m_hWnd || m_show == false) return; SetCapture(); - if(!ButtonHit(point, nullptr, nullptr)) ResetState(true, false, false, false); + if(ButtonHit(point) == CHANNELINDEX_INVALID) + ResetState(true, false, false); m_leftButton = true; m_buttonAction = kUndetermined; @@ -896,10 +812,6 @@ void CChannelManagerDlg::OnRButtonUp(UINT /*nFlags*/,CPoint /*point*/) { ReleaseCapture(); - if(!m_hWnd || m_show == false) return; - - ResetState(false, false, true, false); - m_rightButton = false; } @@ -912,7 +824,7 @@ m_buttonAction = kUndetermined; if(m_moveRect) { - ResetState(true, true, false, false, false); + ResetState(true, true, false, false); InvalidateRect(m_drawableArea, FALSE); } else { @@ -926,116 +838,114 @@ { CHANNELINDEX chn; CRect rect; - if(m_ModDoc != nullptr && ButtonHit(point, &chn, &rect)) + if(m_ModDoc != nullptr && (chn = ButtonHit(point, &rect) != CHANNELINDEX_INVALID)) { ClientToScreen(&point); - m_quickChannelProperties.Show(m_ModDoc, pattern[chn], point); + m_quickChannelProperties->Show(m_ModDoc, m_states[chn].sourceChn, point); } } void CChannelManagerDlg::MouseEvent(UINT nFlags,CPoint point, MouseButton button) { - CHANNELINDEX n; - CRect client, invalidate; - bool hit = ButtonHit(point, &n, &invalidate); - if(hit) n = pattern[n]; + if(!m_ModDoc) + return; m_moveX = point.x; m_moveY = point.y; - if(!m_ModDoc) return; - - if(hit && !state[n] && button != CM_BT_NONE) + CRect client, invalidate; + const CHANNELINDEX n = ButtonHit(point, &invalidate); + if(n != CHANNELINDEX_INVALID && button != CM_BT_NONE) { + const CHANNELINDEX sourceChn = m_states[n].sourceChn; if(nFlags & MK_CONTROL) { if(button == CM_BT_LEFT) { - if(!select[n] && !removed[n]) move[n] = invalidate; - select[n] = true; + if(!m_states[n].select && !m_states[n].removed) + m_states[n].move = invalidate; + m_states[n].select = true; + } else if(button == CM_BT_RIGHT) + { + m_states[n].select = false; } - else if(button == CM_BT_RIGHT) select[n] = false; - } - else if(!removed[n] || m_currentTab == 3) + } else { switch(m_currentTab) { - case kSoloMute: - if(button == CM_BT_LEFT) + case kSoloMute: + if(button == CM_BT_LEFT) + { + if(m_buttonAction == kUndetermined) { - if(m_buttonAction == kUndetermined) + bool isAlreadySolo = true; + for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) { - bool isAlreadySolo = true; - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) - { - if((chn == n) == m_ModDoc->IsChannelMuted(chn)) - { - isAlreadySolo = false; - break; - } - } - m_buttonAction = isAlreadySolo ? kAction2 : kAction1; - for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) + if((chn == sourceChn) == m_ModDoc->IsChannelMuted(chn)) { - m_ModDoc->MuteChannel(chn, m_buttonAction == kAction1); + isAlreadySolo = false; + break; } } - if(m_buttonAction == kAction1) - m_ModDoc->MuteChannel(n, false); - invalidate = client = m_drawableArea; - } else - { - if(m_buttonAction == kUndetermined) - m_buttonAction = m_ModDoc->IsChannelMuted(n) ? kAction1 : kAction2; - m_ModDoc->MuteChannel(n, m_buttonAction == kAction2); + m_buttonAction = isAlreadySolo ? kAction2 : kAction1; + for(CHANNELINDEX chn = 0; chn < m_ModDoc->GetNumChannels(); chn++) + { + m_ModDoc->MuteChannel(chn, m_buttonAction == kAction1); + } } - m_ModDoc->SetModified(); - m_ModDoc->UpdateAllViews(nullptr, GeneralHint(n).Channels(), this); - break; - case kRecordSelect: + if(m_buttonAction == kAction1) + m_ModDoc->MuteChannel(sourceChn, false); + invalidate = client = m_drawableArea; + } else { - auto rec = m_ModDoc->GetChannelRecordGroup(n); if(m_buttonAction == kUndetermined) - m_buttonAction = (rec == RecordGroup::NoGroup || rec != (button == CM_BT_LEFT ? RecordGroup::Group1 : RecordGroup::Group2)) ? kAction1 : kAction2; + m_buttonAction = m_ModDoc->IsChannelMuted(sourceChn) ? kAction1 : kAction2; + m_ModDoc->MuteChannel(sourceChn, m_buttonAction == kAction2); + } + m_ModDoc->SetModified(); + m_ModDoc->UpdateAllViews(nullptr, GeneralHint(sourceChn).Channels(), this); + break; + case kRecordSelect: + if(m_buttonAction == kUndetermined) + { + auto rec = m_ModDoc->GetChannelRecordGroup(sourceChn); + m_buttonAction = (rec == RecordGroup::NoGroup || rec != (button == CM_BT_LEFT ? RecordGroup::Group1 : RecordGroup::Group2)) ? kAction1 : kAction2; + } - if(m_buttonAction == kAction1 && button == CM_BT_LEFT) - m_ModDoc->SetChannelRecordGroup(n, RecordGroup::Group1); - else if(m_buttonAction == kAction1 && button == CM_BT_RIGHT) - m_ModDoc->SetChannelRecordGroup(n, RecordGroup::Group2); - else - m_ModDoc->SetChannelRecordGroup(n, RecordGroup::NoGroup); - m_ModDoc->UpdateAllViews(nullptr, GeneralHint(n).Channels(), this); - break; + if(m_buttonAction == kAction1 && button == CM_BT_LEFT) + m_ModDoc->SetChannelRecordGroup(sourceChn, RecordGroup::Group1); + else if(m_buttonAction == kAction1 && button == CM_BT_RIGHT) + m_ModDoc->SetChannelRecordGroup(sourceChn, RecordGroup::Group2); + else + m_ModDoc->SetChannelRecordGroup(sourceChn, RecordGroup::NoGroup); + m_ModDoc->UpdateAllViews(nullptr, GeneralHint(sourceChn).Channels(), this); + break; + case kPluginState: + m_ModDoc->NoFxChannel(sourceChn, (button != CM_BT_LEFT)); + m_ModDoc->SetModified(); + m_ModDoc->UpdateAllViews(nullptr, GeneralHint(sourceChn).Channels(), this); + break; + case kReorderRemove: + if(button == CM_BT_LEFT) + { + m_states[n].move = invalidate; + m_states[n].select = true; + } else if(button == CM_BT_RIGHT) + { + if(m_buttonAction == kUndetermined) + m_buttonAction = m_states[n].removed ? kAction1 : kAction2; + m_states[n].select = false; + m_states[n].removed = (m_buttonAction == kAction2); } - case kPluginState: - if(button == CM_BT_LEFT) m_ModDoc->NoFxChannel(n, false); - else m_ModDoc->NoFxChannel(n, true); - m_ModDoc->SetModified(); - m_ModDoc->UpdateAllViews(nullptr, GeneralHint(n).Channels(), this); - break; - case kReorderRemove: - if(button == CM_BT_LEFT) - { - move[n] = invalidate; - select[n] = true; - } - if(button == CM_BT_RIGHT) - { - if(m_buttonAction == kUndetermined) - m_buttonAction = removed[n] ? kAction1 : kAction2; - select[n] = false; - removed[n] = (m_buttonAction == kAction2); - } - if(select[n] || button == 0) - { - m_moveRect = true; - } - break; + if(m_states[n].select || button == CM_BT_NONE) + { + m_moveRect = true; + } + break; } } - state[n] = false; InvalidateRect(invalidate, FALSE); } else { Modified: trunk/OpenMPT/mptrack/ChannelManagerDlg.h ============================================================================== --- trunk/OpenMPT/mptrack/ChannelManagerDlg.h Tue Oct 15 20:06:13 2024 (r21823) +++ trunk/OpenMPT/mptrack/ChannelManagerDlg.h Tue Oct 15 20:33:30 2024 (r21824) @@ -12,11 +12,11 @@ #include "openmpt/all/BuildSettings.hpp" #include "DialogBase.h" -#include "PatternEditorDialogs.h" OPENMPT_NAMESPACE_BEGIN class CModDoc; +class QuickChannelProperties; struct UpdateHint; class CChannelManagerDlg : public DialogBase @@ -27,6 +27,7 @@ kRecordSelect = 1, kPluginState = 2, kReorderRemove = 3, + kNumTabs }; public: @@ -43,7 +44,7 @@ private: static CChannelManagerDlg *sharedInstance_; - QuickChannelProperties m_quickChannelProperties; + std::unique_ptr<QuickChannelProperties> m_quickChannelProperties; protected: @@ -64,28 +65,34 @@ CChannelManagerDlg(); ~CChannelManagerDlg(); - CHANNELINDEX memory[4][MAX_BASECHANNELS]; - std::array<CHANNELINDEX, MAX_BASECHANNELS> pattern; - std::bitset<MAX_BASECHANNELS> removed; - std::bitset<MAX_BASECHANNELS> select; - std::bitset<MAX_BASECHANNELS> state; - CRect move[MAX_BASECHANNELS]; - CRect m_drawableArea; + struct State + { + CRect move; + CHANNELINDEX sourceChn = 0; + bool removed = false; + bool select = false; + bool memoryMute = false; + uint8 memoryRecordGroup = 0; + bool memoryNoFx = false; + }; + + std::vector<State> m_states; CModDoc *m_ModDoc = nullptr; HBITMAP m_bkgnd = nullptr; + CRect m_drawableArea; Tab m_currentTab = kSoloMute; int m_downX = 0, m_downY = 0; int m_moveX = 0, m_moveY = 0; int m_buttonHeight = 0; - ButtonAction m_buttonAction; + ButtonAction m_buttonAction = kUndetermined; bool m_leftButton = false; bool m_rightButton = false; bool m_moveRect = false; bool m_show = false; - bool ButtonHit(CPoint point, CHANNELINDEX *id, CRect *invalidate) const; + CHANNELINDEX ButtonHit(CPoint point, CRect *invalidate = nullptr) const; void MouseEvent(UINT nFlags, CPoint point, MouseButton button); - void ResetState(bool bSelection = true, bool bMove = true, bool bButton = true, bool bInternal = true, bool bOrder = false); + void ResetState(bool bSelection = true, bool bMove = true, bool bInternal = true, bool bOrder = false); void ResizeWindow(); //{{AFX_VIRTUAL(CChannelManagerDlg) @@ -96,8 +103,9 @@ afx_msg void OnClose(); afx_msg void OnSelectAll(); afx_msg void OnInvert(); - afx_msg void OnAction1(); - afx_msg void OnAction2(); + afx_msg void OnAction1() { OnAction(1); } + afx_msg void OnAction2() { OnAction(2); } + void OnAction(uint8 action); afx_msg void OnStore(); afx_msg void OnRestore(); afx_msg void OnTabSelchange(NMHDR*, LRESULT* pResult); Modified: trunk/OpenMPT/mptrack/mptrack.rc ============================================================================== --- trunk/OpenMPT/mptrack/mptrack.rc Tue Oct 15 20:06:13 2024 (r21823) +++ trunk/OpenMPT/mptrack/mptrack.rc Tue Oct 15 20:33:30 2024 (r21824) @@ -3407,14 +3407,14 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN CONTROL "",IDC_TAB1,"SysTabControl32",WS_TABSTOP,0,0,523,18,WS_EX_CLIENTEDGE - PUSHBUTTON "Apply",IDC_BUTTON1,395,103,60,12,0,WS_EX_STATICEDGE - PUSHBUTTON "Close",IDC_BUTTON2,461,103,60,12,0,WS_EX_STATICEDGE - PUSHBUTTON "Select all",IDC_BUTTON3,1,103,60,12,0,WS_EX_STATICEDGE - PUSHBUTTON "Invert selection",IDC_BUTTON4,67,103,60,12,0,WS_EX_STATICEDGE - PUSHBUTTON "Solo",IDC_BUTTON5,198,103,60,12,0,WS_EX_STATICEDGE - PUSHBUTTON "Mute",IDC_BUTTON6,264,103,60,12,0,WS_EX_STATICEDGE - PUSHBUTTON "Store",IDC_BUTTON7,438,2,41,11,0,WS_EX_STATICEDGE - PUSHBUTTON "Restore",IDC_BUTTON8,480,2,42,11,0,WS_EX_STATICEDGE + PUSHBUTTON "A&pply",IDC_BUTTON1,395,103,60,12 + PUSHBUTTON "&Close",IDC_BUTTON2,461,103,60,12 + PUSHBUTTON "Select &all",IDC_BUTTON3,1,103,60,12 + PUSHBUTTON "&Invert Selection",IDC_BUTTON4,67,103,60,12 + PUSHBUTTON "S&olo",IDC_BUTTON5,198,103,60,12 + PUSHBUTTON "M&ute",IDC_BUTTON6,264,103,60,12 + PUSHBUTTON "&Store",IDC_BUTTON7,438,2,41,11 + PUSHBUTTON "&Restore",IDC_BUTTON8,480,2,42,11 END IDD_DEFAULTPLUGINEDITOR DIALOGEX 0, 0, 336, 247 @@ -3559,6 +3559,11 @@ BEGIN 0 END + +IDD_CHANNELMANAGER AFX_DIALOG_LAYOUT +BEGIN + 0 +END ///////////////////////////////////////////////////////////////////////////// |
From: <sv...@op...> - 2024-10-15 18:06:26
|
Author: manx Date: Tue Oct 15 20:06:13 2024 New Revision: 21823 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21823 Log: Merged revision(s) 21821 from trunk/OpenMPT: [Mod] build: CI: GitHub: macOS: Run XCode 16.x on macOS 15. [Imp] build: CI: GitHub: macOS: Add builds targeting macOS 15 and 15.1. ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/.github/workflows/macOS-Autotools.yml branches/OpenMPT-1.31/.github/workflows/macOS-Makefile.yml Modified: branches/OpenMPT-1.31/.github/workflows/macOS-Autotools.yml ============================================================================== --- branches/OpenMPT-1.31/.github/workflows/macOS-Autotools.yml Tue Oct 15 20:05:41 2024 (r21822) +++ branches/OpenMPT-1.31/.github/workflows/macOS-Autotools.yml Tue Oct 15 20:06:13 2024 (r21823) @@ -10,8 +10,8 @@ fail-fast: false matrix: include: - - { host: macos-14, compiler: '16.1' } - - { host: macos-14, compiler: '16.0' } + - { host: macos-15, compiler: '16.1' } + - { host: macos-15, compiler: '16.0' } - { host: macos-14, compiler: '15.4' } - { host: macos-14, compiler: '15.3' } - { host: macos-13, compiler: '15.2' } Modified: branches/OpenMPT-1.31/.github/workflows/macOS-Makefile.yml ============================================================================== --- branches/OpenMPT-1.31/.github/workflows/macOS-Makefile.yml Tue Oct 15 20:05:41 2024 (r21822) +++ branches/OpenMPT-1.31/.github/workflows/macOS-Makefile.yml Tue Oct 15 20:06:13 2024 (r21823) @@ -11,38 +11,44 @@ fail-fast: false matrix: include: - - { host: macos-14, compiler: '16.1', arch: '' , target: '' , deps: sys , check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: '' , target: '' , deps: sys , check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: '' , target: '' , deps: sys , check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '' , deps: small, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '' , deps: small, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '15.1' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '15.1' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '15' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '15' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: '' , target: '' , deps: sys , check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '' , deps: small, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '' , deps: small, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '15' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '15' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: '' , target: '' , deps: sys , check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: arm64 , target: '' , deps: local, check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: x86_64, target: '' , deps: local, check: true , ancient: false } |
From: <sv...@op...> - 2024-10-15 18:05:53
|
Author: manx Date: Tue Oct 15 20:05:41 2024 New Revision: 21822 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21822 Log: Merged revision(s) 21820 from trunk/OpenMPT: [Ref] build: CI: GitHub: macOS: GitHub now allows referencing XCode 16.0 as "16.0" instead of ambiguous "16". ........ Modified: branches/OpenMPT-1.31/ (props changed) branches/OpenMPT-1.31/.github/workflows/macOS-Autotools.yml branches/OpenMPT-1.31/.github/workflows/macOS-Makefile.yml Modified: branches/OpenMPT-1.31/.github/workflows/macOS-Autotools.yml ============================================================================== --- branches/OpenMPT-1.31/.github/workflows/macOS-Autotools.yml Tue Oct 15 17:04:55 2024 (r21821) +++ branches/OpenMPT-1.31/.github/workflows/macOS-Autotools.yml Tue Oct 15 20:05:41 2024 (r21822) @@ -11,7 +11,7 @@ matrix: include: - { host: macos-14, compiler: '16.1' } - - { host: macos-14, compiler: '16' } + - { host: macos-14, compiler: '16.0' } - { host: macos-14, compiler: '15.4' } - { host: macos-14, compiler: '15.3' } - { host: macos-13, compiler: '15.2' } Modified: branches/OpenMPT-1.31/.github/workflows/macOS-Makefile.yml ============================================================================== --- branches/OpenMPT-1.31/.github/workflows/macOS-Makefile.yml Tue Oct 15 17:04:55 2024 (r21821) +++ branches/OpenMPT-1.31/.github/workflows/macOS-Makefile.yml Tue Oct 15 20:05:41 2024 (r21822) @@ -27,22 +27,22 @@ - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: '' , target: '' , deps: sys , check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: '' , target: '' , deps: sys , check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '' , deps: small, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '' , deps: small, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: '' , target: '' , deps: sys , check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: arm64 , target: '' , deps: local, check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: x86_64, target: '' , deps: local, check: true , ancient: false } |
From: <sv...@op...> - 2024-10-15 15:05:07
|
Author: manx Date: Tue Oct 15 17:04:55 2024 New Revision: 21821 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21821 Log: [Mod] build: CI: GitHub: macOS: Run XCode 16.x on macOS 15. [Imp] build: CI: GitHub: macOS: Add builds targeting macOS 15 and 15.1. Modified: trunk/OpenMPT/.github/workflows/macOS-Autotools.yml trunk/OpenMPT/.github/workflows/macOS-Makefile.yml Modified: trunk/OpenMPT/.github/workflows/macOS-Autotools.yml ============================================================================== --- trunk/OpenMPT/.github/workflows/macOS-Autotools.yml Tue Oct 15 16:46:33 2024 (r21820) +++ trunk/OpenMPT/.github/workflows/macOS-Autotools.yml Tue Oct 15 17:04:55 2024 (r21821) @@ -12,8 +12,8 @@ fail-fast: false matrix: include: - - { host: macos-14, compiler: '16.1' } - - { host: macos-14, compiler: '16.0' } + - { host: macos-15, compiler: '16.1' } + - { host: macos-15, compiler: '16.0' } - { host: macos-14, compiler: '15.4' } - { host: macos-14, compiler: '15.3' } - { host: macos-13, compiler: '15.2' } Modified: trunk/OpenMPT/.github/workflows/macOS-Makefile.yml ============================================================================== --- trunk/OpenMPT/.github/workflows/macOS-Makefile.yml Tue Oct 15 16:46:33 2024 (r21820) +++ trunk/OpenMPT/.github/workflows/macOS-Makefile.yml Tue Oct 15 17:04:55 2024 (r21821) @@ -13,38 +13,44 @@ fail-fast: false matrix: include: - - { host: macos-14, compiler: '16.1', arch: '' , target: '' , deps: sys , check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: '' , target: '' , deps: sys , check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: '' , target: '' , deps: sys , check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '' , deps: small, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '' , deps: small, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '15.1' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '15.1' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '15' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '15' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.1', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: '' , target: '' , deps: sys , check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '' , deps: small, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '' , deps: small, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '15' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '15' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } + - { host: macos-15, compiler: '16.0', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: '' , target: '' , deps: sys , check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: arm64 , target: '' , deps: local, check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: x86_64, target: '' , deps: local, check: true , ancient: false } |
From: <sv...@op...> - 2024-10-15 14:46:45
|
Author: manx Date: Tue Oct 15 16:46:33 2024 New Revision: 21820 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21820 Log: [Ref] build: CI: GitHub: macOS: GitHub now allows referencing XCode 16.0 as "16.0" instead of ambiguous "16". Modified: trunk/OpenMPT/.github/workflows/macOS-Autotools.yml trunk/OpenMPT/.github/workflows/macOS-Makefile.yml Modified: trunk/OpenMPT/.github/workflows/macOS-Autotools.yml ============================================================================== --- trunk/OpenMPT/.github/workflows/macOS-Autotools.yml Mon Oct 14 23:55:28 2024 (r21819) +++ trunk/OpenMPT/.github/workflows/macOS-Autotools.yml Tue Oct 15 16:46:33 2024 (r21820) @@ -13,7 +13,7 @@ matrix: include: - { host: macos-14, compiler: '16.1' } - - { host: macos-14, compiler: '16' } + - { host: macos-14, compiler: '16.0' } - { host: macos-14, compiler: '15.4' } - { host: macos-14, compiler: '15.3' } - { host: macos-13, compiler: '15.2' } Modified: trunk/OpenMPT/.github/workflows/macOS-Makefile.yml ============================================================================== --- trunk/OpenMPT/.github/workflows/macOS-Makefile.yml Mon Oct 14 23:55:28 2024 (r21819) +++ trunk/OpenMPT/.github/workflows/macOS-Makefile.yml Tue Oct 15 16:46:33 2024 (r21820) @@ -29,22 +29,22 @@ - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } - { host: macos-14, compiler: '16.1', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: '' , target: '' , deps: sys , check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '' , deps: small, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '14' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '13' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '12' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: arm64 , target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '11' , deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } - - { host: macos-14, compiler: '16' , arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: '' , target: '' , deps: sys , check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '' , deps: small, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '' , deps: small, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '14' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '14' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '13' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '13' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '12' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '12' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: arm64 , target: '11' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '11' , deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.15', deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.14', deps: local, check: true , ancient: false } + - { host: macos-14, compiler: '16.0', arch: x86_64, target: '10.13', deps: local, check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: '' , target: '' , deps: sys , check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: arm64 , target: '' , deps: local, check: true , ancient: false } - { host: macos-14, compiler: '15.4', arch: x86_64, target: '' , deps: local, check: true , ancient: false } |
From: <sv...@op...> - 2024-10-14 21:55:35
|
Author: sagamusix Date: Mon Oct 14 23:55:28 2024 New Revision: 21819 URL: https://source.openmpt.org/browse/openmpt/?op=revision&rev=21819 Log: [Ref] More include file fixups. Modified: trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/dlg_misc.cpp Modified: trunk/OpenMPT/mptrack/MainFrm.cpp ============================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp Mon Oct 14 23:50:13 2024 (r21818) +++ trunk/OpenMPT/mptrack/MainFrm.cpp Mon Oct 14 23:55:28 2024 (r21819) @@ -16,6 +16,7 @@ #include "Childfrm.h" #include "CloseMainDialog.h" #include "ColorConfigDlg.h" +#include "dlg_misc.h" #include "Dlsbank.h" #include "FileDialog.h" #include "FolderScanner.h" Modified: trunk/OpenMPT/mptrack/dlg_misc.cpp ============================================================================== --- trunk/OpenMPT/mptrack/dlg_misc.cpp Mon Oct 14 23:50:13 2024 (r21818) +++ trunk/OpenMPT/mptrack/dlg_misc.cpp Mon Oct 14 23:55:28 2024 (r21819) @@ -10,7 +10,6 @@ #include "stdafx.h" #include "dlg_misc.h" -#include "ChannelManagerDlg.h" #include "Childfrm.h" #include "Dlsbank.h" #include "Moddoc.h" @@ -18,6 +17,7 @@ #include "Reporting.h" #include "resource.h" #include "TempoSwingDialog.h" +#include "TrackerSettings.h" #include "WindowMessages.h" #include "../common/mptStringBuffer.h" #include "../common/version.h" |