fix chanShowChanOsc-related bugs
when swapping or stomping channels/systems
This commit is contained in:
		
							parent
							
								
									f9ba6809e9
								
							
						
					
					
						commit
						5b170f75ec
					
				| 
						 | 
					@ -636,6 +636,7 @@ void DivEngine::swapChannels(int src, int dest) {
 | 
				
			||||||
  String prevChanName=curSubSong->chanName[src];
 | 
					  String prevChanName=curSubSong->chanName[src];
 | 
				
			||||||
  String prevChanShortName=curSubSong->chanShortName[src];
 | 
					  String prevChanShortName=curSubSong->chanShortName[src];
 | 
				
			||||||
  bool prevChanShow=curSubSong->chanShow[src];
 | 
					  bool prevChanShow=curSubSong->chanShow[src];
 | 
				
			||||||
 | 
					  bool prevChanShowChanOsc=curSubSong->chanShowChanOsc[src];
 | 
				
			||||||
  unsigned char prevChanCollapse=curSubSong->chanCollapse[src];
 | 
					  unsigned char prevChanCollapse=curSubSong->chanCollapse[src];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  curSubSong->chanName[src]=curSubSong->chanName[dest];
 | 
					  curSubSong->chanName[src]=curSubSong->chanName[dest];
 | 
				
			||||||
| 
						 | 
					@ -645,6 +646,7 @@ void DivEngine::swapChannels(int src, int dest) {
 | 
				
			||||||
  curSubSong->chanName[dest]=prevChanName;
 | 
					  curSubSong->chanName[dest]=prevChanName;
 | 
				
			||||||
  curSubSong->chanShortName[dest]=prevChanShortName;
 | 
					  curSubSong->chanShortName[dest]=prevChanShortName;
 | 
				
			||||||
  curSubSong->chanShow[dest]=prevChanShow;
 | 
					  curSubSong->chanShow[dest]=prevChanShow;
 | 
				
			||||||
 | 
					  curSubSong->chanShowChanOsc[dest]=prevChanShowChanOsc;
 | 
				
			||||||
  curSubSong->chanCollapse[dest]=prevChanCollapse;
 | 
					  curSubSong->chanCollapse[dest]=prevChanCollapse;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -658,6 +660,7 @@ void DivEngine::stompChannel(int ch) {
 | 
				
			||||||
  curSubSong->chanName[ch]="";
 | 
					  curSubSong->chanName[ch]="";
 | 
				
			||||||
  curSubSong->chanShortName[ch]="";
 | 
					  curSubSong->chanShortName[ch]="";
 | 
				
			||||||
  curSubSong->chanShow[ch]=true;
 | 
					  curSubSong->chanShow[ch]=true;
 | 
				
			||||||
 | 
					  curSubSong->chanShowChanOsc[ch]=true;
 | 
				
			||||||
  curSubSong->chanCollapse[ch]=false;
 | 
					  curSubSong->chanCollapse[ch]=false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -804,6 +807,7 @@ int DivEngine::duplicateSubSong(int index) {
 | 
				
			||||||
  theCopy->orders=theOrig->orders;
 | 
					  theCopy->orders=theOrig->orders;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  memcpy(theCopy->chanShow,theOrig->chanShow,DIV_MAX_CHANS*sizeof(bool));
 | 
					  memcpy(theCopy->chanShow,theOrig->chanShow,DIV_MAX_CHANS*sizeof(bool));
 | 
				
			||||||
 | 
					  memcpy(theCopy->chanShowChanOsc,theOrig->chanShowChanOsc,DIV_MAX_CHANS*sizeof(bool));
 | 
				
			||||||
  memcpy(theCopy->chanCollapse,theOrig->chanCollapse,DIV_MAX_CHANS);
 | 
					  memcpy(theCopy->chanCollapse,theOrig->chanCollapse,DIV_MAX_CHANS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (int i=0; i<DIV_MAX_CHANS; i++) {
 | 
					  for (int i=0; i<DIV_MAX_CHANS; i++) {
 | 
				
			||||||
| 
						 | 
					@ -1323,6 +1327,7 @@ void DivEngine::swapSystemUnsafe(int src, int dest, bool preserveOrder) {
 | 
				
			||||||
      String prevChanName[DIV_MAX_CHANS];
 | 
					      String prevChanName[DIV_MAX_CHANS];
 | 
				
			||||||
      String prevChanShortName[DIV_MAX_CHANS];
 | 
					      String prevChanShortName[DIV_MAX_CHANS];
 | 
				
			||||||
      bool prevChanShow[DIV_MAX_CHANS];
 | 
					      bool prevChanShow[DIV_MAX_CHANS];
 | 
				
			||||||
 | 
					      bool prevChanShowChanOsc[DIV_MAX_CHANS];
 | 
				
			||||||
      unsigned char prevChanCollapse[DIV_MAX_CHANS];
 | 
					      unsigned char prevChanCollapse[DIV_MAX_CHANS];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      for (int j=0; j<tchans; j++) {
 | 
					      for (int j=0; j<tchans; j++) {
 | 
				
			||||||
| 
						 | 
					@ -1334,6 +1339,7 @@ void DivEngine::swapSystemUnsafe(int src, int dest, bool preserveOrder) {
 | 
				
			||||||
        prevChanName[j]=song.subsong[i]->chanName[j];
 | 
					        prevChanName[j]=song.subsong[i]->chanName[j];
 | 
				
			||||||
        prevChanShortName[j]=song.subsong[i]->chanShortName[j];
 | 
					        prevChanShortName[j]=song.subsong[i]->chanShortName[j];
 | 
				
			||||||
        prevChanShow[j]=song.subsong[i]->chanShow[j];
 | 
					        prevChanShow[j]=song.subsong[i]->chanShow[j];
 | 
				
			||||||
 | 
					        prevChanShowChanOsc[j]=song.subsong[i]->chanShowChanOsc[j];
 | 
				
			||||||
        prevChanCollapse[j]=song.subsong[i]->chanCollapse[j];
 | 
					        prevChanCollapse[j]=song.subsong[i]->chanCollapse[j];
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1347,6 +1353,7 @@ void DivEngine::swapSystemUnsafe(int src, int dest, bool preserveOrder) {
 | 
				
			||||||
        song.subsong[i]->chanName[j]=prevChanName[swappedChannels[j]];
 | 
					        song.subsong[i]->chanName[j]=prevChanName[swappedChannels[j]];
 | 
				
			||||||
        song.subsong[i]->chanShortName[j]=prevChanShortName[swappedChannels[j]];
 | 
					        song.subsong[i]->chanShortName[j]=prevChanShortName[swappedChannels[j]];
 | 
				
			||||||
        song.subsong[i]->chanShow[j]=prevChanShow[swappedChannels[j]];
 | 
					        song.subsong[i]->chanShow[j]=prevChanShow[swappedChannels[j]];
 | 
				
			||||||
 | 
					        song.subsong[i]->chanShowChanOsc[j]=prevChanShowChanOsc[swappedChannels[j]];
 | 
				
			||||||
        song.subsong[i]->chanCollapse[j]=prevChanCollapse[swappedChannels[j]];
 | 
					        song.subsong[i]->chanCollapse[j]=prevChanCollapse[swappedChannels[j]];
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue