diff --git a/stepmania/src/arch/Sound/RageSoundDriver_QT.cpp b/stepmania/src/arch/Sound/RageSoundDriver_QT.cpp index cf39d462d5..a5b1da6091 100644 --- a/stepmania/src/arch/Sound/RageSoundDriver_QT.cpp +++ b/stepmania/src/arch/Sound/RageSoundDriver_QT.cpp @@ -46,7 +46,6 @@ typedef struct soundInfo static short dataRefIndices[4]; static SoundDescriptionHandle sndDescHdl; -//void soundInfo::DisposeSampleReferences(Media media, short index) void DisposeSampleReferences(Media media, short index) { LockMutex L(SOUNDMAN->lock); @@ -133,11 +132,10 @@ static void CallBack(QTCallBack cb, long refCon) EndMediaEdits(media); err = GetMoviesError(); TEST_ERR(err, AddMediaSample); - CHECKPOINT; - InsertMediaIntoTrack(track, -1, tv, samples, 0x00010000); - CHECKPOINT; + err = InsertMediaIntoTrack(track, -1, tv, samples, 1L<<16); + TEST_ERR(err, InsertMediaIntoTrack); - if (++dataRefIndices[3] > 3) + if (++dataRefIndices[3] >= 3) { SetMovieActiveSegment(movie, (dataRefIndices[3] - 2) * samples, twicesamples); DisposeSampleReferences(media, dataRefIndices[3] % 3); @@ -162,6 +160,9 @@ static void CallBack(QTCallBack cb, long refCon) RageSound_QT::RageSound_QT() { +#if 1 + RageException::ThrowNonfatal("Class not finished."); +#endif lastPos = 0; bzero(dataRefIndices, 8); @@ -204,6 +205,17 @@ RageSound_QT::~RageSound_QT() s->snd->StopPlaying(); sounds.pop_back(); } + StopMovie(movie); + Media media = GetTrackMedia(track); + if (media) + { + DisposeSampleReferences(media, 0); + DisposeSampleReferences(media, 1); + DisposeSampleReferences(media, 2); + } + DisposeMovieTrack(track); + DisposeMovie(movie); + DisposeHandle(Handle(sndDescHdl)); } void RageSound_QT::StartMixing(RageSound *snd) diff --git a/stepmania/src/arch/arch.cpp b/stepmania/src/arch/arch.cpp index 8b06ff598d..afd38da58d 100644 --- a/stepmania/src/arch/arch.cpp +++ b/stepmania/src/arch/arch.cpp @@ -78,6 +78,9 @@ RageSoundDriver *MakeRageSoundDriver(CString drivers) #endif #ifdef RAGE_SOUND_QT if(!DriversToTry[i].CompareNoCase("QT")) ret = new RageSound_QT; +#endif +#ifdef RAGE_SOUND_QT1 + if(!DriversToTry[i].CompareNoCase("QT1")) ret = new RageSound_QT1; #endif if(!DriversToTry[i].CompareNoCase("Null")) ret = new RageSound_Null; if( !ret ) diff --git a/stepmania/src/arch/arch.h b/stepmania/src/arch/arch.h index 72e117483d..7f34a34fa7 100644 --- a/stepmania/src/arch/arch.h +++ b/stepmania/src/arch/arch.h @@ -26,7 +26,7 @@ RageSoundDriver *MakeRageSoundDriver(CString drivers); #if defined(LINUX) #define DEFAULT_SOUND_DRIVER_LIST "ALSA9,OSS,Null" #elif defined(DARWIN) - #define DEFAULT_SOUND_DRIVER_LIST "QT" + #define DEFAULT_SOUND_DRIVER_LIST "QT,QT1" #elif defined(_WINDOWS) #define DEFAULT_SOUND_DRIVER_LIST "DirectSound,DirectSound-sw,WaveOut" #elif defined(_XBOX) diff --git a/stepmania/src/arch/arch_darwin.h b/stepmania/src/arch/arch_darwin.h index c4449f935c..86aac7a38f 100644 --- a/stepmania/src/arch/arch_darwin.h +++ b/stepmania/src/arch/arch_darwin.h @@ -10,6 +10,7 @@ * */ +#include "Sound/RageSoundDriver_QT1.h" #include "Sound/RageSoundDriver_QT.h" #include "LoadingWindow/LoadingWindow_Cocoa.h" #include "ErrorDialog/ErrorDialog_darwin.h"