Пример #1
0
void BURGERCALL MADSndClose(MADDriverRec *inMADDriver)
{
	if (inMADDriver->MusicChannelPP) {
		SndDisposeChannel(inMADDriver->MusicChannelPP,TRUE);
		inMADDriver->MusicChannelPP = 0;
	}
	if (inMADDriver->CallBackUPP) {
		DisposeSndCallBackUPP(inMADDriver->CallBackUPP);
		inMADDriver->CallBackUPP = 0;
	}
	DeallocAPointer(inMADDriver->SndBuffer);
	inMADDriver->SndBuffer = 0;
}
Пример #2
0
static void SoundChannel_Term(void) {

volatile QSOUND		qs;
	SndChannelPtr	hdl;
	SndCallBackUPP	cb;

	qs = &QSound;
	hdl = qs->hdl;
	qs->hdl = NULL;
	cb = qs->cb;
	qs->cb = NULL;

#if TARGET_API_MAC_CARBON
	if (cb) {
		DisposeSndCallBackUPP(cb);
	}
#endif
	if (hdl) {
		SndDisposeChannel(hdl, TRUE);
	}
}
Пример #3
0
int BURGERCALL MADSndOpen( MADDriverRec *inMADDriver)
{
	int err;
	SndChannelPtr mySndChan;	// pointer to a sound channel
	SndCallBackUPP CallBack;
	
	CallBack = NewSndCallBackUPP(MyDoubleBackProc);
	err=-1;
	if (CallBack) {
		mySndChan = 0L;
		err = SndNewChannel(&mySndChan, sampledSynth, 0, CallBack);
		if (!err) {
			if (mySndChan) {			/* Failsafe */
				inMADDriver->CallBackUPP = CallBack;
				inMADDriver->MusicChannelPP = mySndChan;
				mySndChan->userInfo = (long)inMADDriver;
				return DBSndPlay(inMADDriver, inMADDriver->MusicChannelPP);
			}
			err = MADSoundManagerErr;
		}
		DisposeSndCallBackUPP(CallBack);	/* Kill the callback */
	}
	return err;
}