--- linuxsampler/trunk/src/engines/gig/Engine.cpp 2007/09/04 01:12:49 1321 +++ linuxsampler/trunk/src/engines/gig/Engine.cpp 2007/10/11 18:53:29 1399 @@ -189,7 +189,7 @@ * engine afterwards by calling @c ResumeAll() later on! */ void Engine::SuspendAll() { - dmsg(1,("gig::Engine: Suspending all ...\n")); + dmsg(2,("gig::Engine: Suspending all ...\n")); // stop the engine, so we can safely modify the engine's // data structures from this foreign thread DisableAndLock(); @@ -223,7 +223,7 @@ if (!iPendingStreamDeletions) break; usleep(10000); // sleep for 10ms } - dmsg(1,("gig::Engine: Everything suspended.\n")); + dmsg(2,("gig::Engine: Everything suspended.\n")); } /** @@ -245,13 +245,13 @@ * @param pRegion - region the engine shall stop using */ void Engine::Suspend(::gig::Region* pRegion) { - dmsg(1,("gig::Engine: Suspending Region %x ...\n",pRegion)); + dmsg(2,("gig::Engine: Suspending Region %x ...\n",pRegion)); SuspendedRegionsMutex.Lock(); SuspensionChangeOngoing.Set(true); pPendingRegionSuspension = pRegion; SuspensionChangeOngoing.WaitAndUnlockIf(true); SuspendedRegionsMutex.Unlock(); - dmsg(1,("gig::Engine: Region %x suspended.",pRegion)); + dmsg(2,("gig::Engine: Region %x suspended.",pRegion)); } /** @@ -261,13 +261,13 @@ * @param pRegion - region the engine shall be allowed to use again */ void Engine::Resume(::gig::Region* pRegion) { - dmsg(1,("gig::Engine: Resuming Region %x ...\n",pRegion)); + dmsg(2,("gig::Engine: Resuming Region %x ...\n",pRegion)); SuspendedRegionsMutex.Lock(); SuspensionChangeOngoing.Set(true); pPendingRegionResumption = pRegion; SuspensionChangeOngoing.WaitAndUnlockIf(true); SuspendedRegionsMutex.Unlock(); - dmsg(1,("gig::Engine: Region %x resumed.\n",pRegion)); + dmsg(2,("gig::Engine: Region %x resumed.\n",pRegion)); } /** @@ -778,7 +778,7 @@ } } } - + pEngineChannel->SetVoiceCount(voiceCount); pEngineChannel->SetDiskStreamCount(streamCount); } @@ -1686,8 +1686,10 @@ break; } case 65: { // portamento on / off - KillAllVoices(pEngineChannel, itControlChangeEvent); - pEngineChannel->PortamentoMode = itControlChangeEvent->Param.CC.Value >= 64; + const bool bPortamento = itControlChangeEvent->Param.CC.Value >= 64; + if (bPortamento != pEngineChannel->PortamentoMode) + KillAllVoices(pEngineChannel, itControlChangeEvent); + pEngineChannel->PortamentoMode = bPortamento; break; } case 66: { // sostenuto @@ -1757,12 +1759,14 @@ break; } case 126: { // mono mode on - KillAllVoices(pEngineChannel, itControlChangeEvent); + if (!pEngineChannel->SoloMode) + KillAllVoices(pEngineChannel, itControlChangeEvent); pEngineChannel->SoloMode = true; break; } case 127: { // poly mode on - KillAllVoices(pEngineChannel, itControlChangeEvent); + if (pEngineChannel->SoloMode) + KillAllVoices(pEngineChannel, itControlChangeEvent); pEngineChannel->SoloMode = false; break; } @@ -1971,7 +1975,7 @@ } String Engine::Version() { - String s = "$Revision: 1.80 $"; + String s = "$Revision: 1.82 $"; return s.substr(11, s.size() - 13); // cut dollar signs, spaces and CVS macro keyword }