[Scummvm-cvs-logs] CVS: scummvm/sound mididrv.cpp,1.15,1.16
Max Horn
fingolfin at users.sourceforge.net
Sun Apr 28 14:31:19 CEST 2002
Update of /cvsroot/scummvm/scummvm/sound
In directory usw-pr-cvs1:/tmp/cvs-serv18230
Modified Files:
mididrv.cpp
Log Message:
cleanup; implemented close() for CoreAudio driver
Index: mididrv.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sound/mididrv.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** mididrv.cpp 27 Apr 2002 14:44:07 -0000 1.15
--- mididrv.cpp 28 Apr 2002 00:32:00 -0000 1.16
***************
*** 639,642 ****
--- 639,644 ----
class MidiDriver_CORE : public MidiDriver {
public:
+ MidiDriver_CORE() : au_MusicDevice(NULL), au_output(NULL) {}
+
int open(int mode);
void close();
***************
*** 647,656 ****
private:
AudioUnit au_MusicDevice;
StreamCallback *_stream_proc;
! void *_stream_param;
! int _mode;
};
void MidiDriver_CORE::set_stream_callback(void *param, StreamCallback *sc) {
_stream_param = param;
--- 649,660 ----
private:
AudioUnit au_MusicDevice;
+ AudioUnit au_output;
StreamCallback *_stream_proc;
! void *_stream_param;
! int _mode;
};
+
void MidiDriver_CORE::set_stream_callback(void *param, StreamCallback *sc) {
_stream_param = param;
***************
*** 659,666 ****
int MidiDriver_CORE::open(int mode) {
_mode = mode;
- AudioUnit au_output;
-
int err;
struct AudioUnitConnection auconnect;
--- 663,672 ----
int MidiDriver_CORE::open(int mode) {
+
+ if (au_output != NULL)
+ return MERR_ALREADY_OPEN;
+
_mode = mode;
int err;
struct AudioUnitConnection auconnect;
***************
*** 668,692 ****
Component compid;
! au_MusicDevice=au_output=NULL;
!
! //Open the Music Device
! compdesc.componentType=kAudioUnitComponentType;
! compdesc.componentSubType=kAudioUnitSubType_MusicDevice;
! compdesc.componentManufacturer=kAudioUnitID_DLSSynth;
! compdesc.componentFlags=0;
! compdesc.componentFlagsMask=0;
! compid=FindNextComponent(NULL,&compdesc);
! au_MusicDevice=(AudioUnit)OpenComponent(compid);
// open the output unit
! au_output=(AudioUnit)OpenDefaultComponent(kAudioUnitComponentType,kAudioUnitSubType_Output);
// connect the units
! auconnect.sourceAudioUnit=au_MusicDevice;
! auconnect.sourceOutputNumber=0;
! auconnect.destInputNumber=0;
! err=AudioUnitSetProperty(au_output,kAudioUnitProperty_MakeConnection,kAudioUnitScope_Input,0,(void*)&auconnect,sizeof(struct AudioUnitConnection));
// initialize the units
AudioUnitInitialize(au_MusicDevice);
AudioUnitInitialize(au_output);
// start the output
AudioOutputUnitStart(au_output);
--- 674,699 ----
Component compid;
! // Open the Music Device
! compdesc.componentType = kAudioUnitComponentType;
! compdesc.componentSubType = kAudioUnitSubType_MusicDevice;
! compdesc.componentManufacturer = kAudioUnitID_DLSSynth;
! compdesc.componentFlags = 0;
! compdesc.componentFlagsMask = 0;
! compid = FindNextComponent(NULL,&compdesc);
! au_MusicDevice = (AudioUnit)OpenComponent(compid);
// open the output unit
! au_output = (AudioUnit)OpenDefaultComponent(kAudioUnitComponentType,kAudioUnitSubType_Output);
!
// connect the units
! auconnect.sourceAudioUnit = au_MusicDevice;
! auconnect.sourceOutputNumber = 0;
! auconnect.destInputNumber = 0;
! err = AudioUnitSetProperty(au_output,kAudioUnitProperty_MakeConnection,kAudioUnitScope_Input,0,(void*)&auconnect,sizeof(struct AudioUnitConnection));
!
// initialize the units
AudioUnitInitialize(au_MusicDevice);
AudioUnitInitialize(au_output);
+
// start the output
AudioOutputUnitStart(au_output);
***************
*** 696,699 ****
--- 703,714 ----
void MidiDriver_CORE::close() {
+
+ // Stop the output
+ AudioOutputUnitStop(au_output);
+
+ // Cleanup
+ CloseComponent(au_output);
+ CloseComponent(au_MusicDevice);
+
_mode = 0;
}
More information about the Scummvm-git-logs
mailing list