comparison src/cdrom/macosx/CDPlayer.c @ 1487:dc6b59e925a2

Cleaning up warnings on MacOS X
author Sam Lantinga <slouken@libsdl.org>
date Thu, 09 Mar 2006 06:33:21 +0000
parents d910939febfa
children 782fd950bd46 c121d94672cb a1b03ba2fcd0
comparison
equal deleted inserted replaced
1486:9d77fc9d0ace 1487:dc6b59e925a2
23 23
24 #include "CDPlayer.h" 24 #include "CDPlayer.h"
25 #include "AudioFilePlayer.h" 25 #include "AudioFilePlayer.h"
26 #include "SDLOSXCAGuard.h" 26 #include "SDLOSXCAGuard.h"
27 27
28 // we're exporting these functions into C land for SDL_syscdrom.c 28 /* we're exporting these functions into C land for SDL_syscdrom.c */
29 //extern "C" { 29 /*extern "C" {*/
30 30
31 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ 31 /*///////////////////////////////////////////////////////////////////////////
32 // Constants 32 Constants
33 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ 33 //////////////////////////////////////////////////////////////////////////*/
34 34
35 #define kAudioCDFilesystemID (UInt16)(('J' << 8) | 'H') // 'JH'; this avoids compiler warning 35 #define kAudioCDFilesystemID (UInt16)(('J' << 8) | 'H') /* 'JH'; this avoids compiler warning */
36 36
37 // XML PList keys 37 /* XML PList keys */
38 #define kRawTOCDataString "Format 0x02 TOC Data" 38 #define kRawTOCDataString "Format 0x02 TOC Data"
39 #define kSessionsString "Sessions" 39 #define kSessionsString "Sessions"
40 #define kSessionTypeString "Session Type" 40 #define kSessionTypeString "Session Type"
41 #define kTrackArrayString "Track Array" 41 #define kTrackArrayString "Track Array"
42 #define kFirstTrackInSessionString "First Track" 42 #define kFirstTrackInSessionString "First Track"
45 #define kDataKeyString "Data" 45 #define kDataKeyString "Data"
46 #define kPointKeyString "Point" 46 #define kPointKeyString "Point"
47 #define kSessionNumberKeyString "Session Number" 47 #define kSessionNumberKeyString "Session Number"
48 #define kStartBlockKeyString "Start Block" 48 #define kStartBlockKeyString "Start Block"
49 49
50 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ 50 /*///////////////////////////////////////////////////////////////////////////
51 // Globals 51 Globals
52 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ 52 //////////////////////////////////////////////////////////////////////////*/
53 53
54 #pragma mark -- Globals -- 54 #pragma mark -- Globals --
55 55
56 static int playBackWasInit = 0; 56 static int playBackWasInit = 0;
57 static AudioUnit theUnit; 57 static AudioUnit theUnit;
59 static CDPlayerCompletionProc completionProc = NULL; 59 static CDPlayerCompletionProc completionProc = NULL;
60 static SDL_mutex *apiMutex = NULL; 60 static SDL_mutex *apiMutex = NULL;
61 static SDL_sem *callbackSem; 61 static SDL_sem *callbackSem;
62 static SDL_CD* theCDROM; 62 static SDL_CD* theCDROM;
63 63
64 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ 64 /*///////////////////////////////////////////////////////////////////////////
65 // Prototypes 65 Prototypes
66 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ 66 //////////////////////////////////////////////////////////////////////////*/
67 67
68 #pragma mark -- Prototypes -- 68 #pragma mark -- Prototypes --
69 69
70 static OSStatus CheckInit (); 70 static OSStatus CheckInit ();
71 71
86 86
87 void Unlock () 87 void Unlock ()
88 { 88 {
89 SDL_mutexV(apiMutex); 89 SDL_mutexV(apiMutex);
90 } 90 }
91
92 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
93 // DetectAudioCDVolumes
94 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
95 91
96 int DetectAudioCDVolumes(FSVolumeRefNum *volumes, int numVolumes) 92 int DetectAudioCDVolumes(FSVolumeRefNum *volumes, int numVolumes)
97 { 93 {
98 int volumeIndex; 94 int volumeIndex;
99 int cdVolumeCount = 0; 95 int cdVolumeCount = 0;
114 NULL, 110 NULL,
115 NULL); 111 NULL);
116 112
117 if (result == noErr) 113 if (result == noErr)
118 { 114 {
119 if (volumeInfo.filesystemID == kAudioCDFilesystemID) // It's an audio CD 115 if (volumeInfo.filesystemID == kAudioCDFilesystemID) /* It's an audio CD */
120 { 116 {
121 if (volumes != NULL && cdVolumeCount < numVolumes) 117 if (volumes != NULL && cdVolumeCount < numVolumes)
122 volumes[cdVolumeCount] = actualVolume; 118 volumes[cdVolumeCount] = actualVolume;
123 119
124 cdVolumeCount++; 120 cdVolumeCount++;
125 } 121 }
126 } 122 }
127 else 123 else
128 { 124 {
129 // I'm commenting this out because it seems to be harmless 125 /* I'm commenting this out because it seems to be harmless */
130 //SDL_SetError ("DetectAudioCDVolumes: FSGetVolumeInfo returned %d", result); 126 /*SDL_SetError ("DetectAudioCDVolumes: FSGetVolumeInfo returned %d", result);*/
131 } 127 }
132 } 128 }
133 129
134 return cdVolumeCount; 130 return cdVolumeCount;
135 } 131 }
136
137 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
138 // ReadTOCData
139 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
140 132
141 int ReadTOCData (FSVolumeRefNum theVolume, SDL_CD *theCD) 133 int ReadTOCData (FSVolumeRefNum theVolume, SDL_CD *theCD)
142 { 134 {
143 HFSUniStr255 dataForkName; 135 HFSUniStr255 dataForkName;
144 OSStatus theErr; 136 OSStatus theErr;
152 FSRefParam fsRefPB; 144 FSRefParam fsRefPB;
153 FSRef tocPlistFSRef; 145 FSRef tocPlistFSRef;
154 146
155 const char* error = "Unspecified Error"; 147 const char* error = "Unspecified Error";
156 148
157 // get stuff from .TOC.plist 149 /* get stuff from .TOC.plist */
158 fsRefPB.ioCompletion = NULL; 150 fsRefPB.ioCompletion = NULL;
159 fsRefPB.ioNamePtr = "\p.TOC.plist"; 151 fsRefPB.ioNamePtr = "\p.TOC.plist";
160 fsRefPB.ioVRefNum = theVolume; 152 fsRefPB.ioVRefNum = theVolume;
161 fsRefPB.ioDirID = 0; 153 fsRefPB.ioDirID = 0;
162 fsRefPB.newRef = &tocPlistFSRef; 154 fsRefPB.newRef = &tocPlistFSRef;
165 if(theErr != noErr) { 157 if(theErr != noErr) {
166 error = "PBMakeFSRefSync"; 158 error = "PBMakeFSRefSync";
167 goto bail; 159 goto bail;
168 } 160 }
169 161
170 // Load and parse the TOC XML data 162 /* Load and parse the TOC XML data */
171 163
172 theErr = FSGetDataForkName (&dataForkName); 164 theErr = FSGetDataForkName (&dataForkName);
173 if (theErr != noErr) { 165 if (theErr != noErr) {
174 error = "FSGetDataForkName"; 166 error = "FSGetDataForkName";
175 goto bail; 167 goto bail;
185 if (theErr != noErr) { 177 if (theErr != noErr) {
186 error = "FSGetForkSize"; 178 error = "FSGetForkSize";
187 goto bail; 179 goto bail;
188 } 180 }
189 181
190 // Allocate some memory for the XML data 182 /* Allocate some memory for the XML data */
191 forkData = NewPtr (forkSize); 183 forkData = NewPtr (forkSize);
192 if(forkData == NULL) { 184 if(forkData == NULL) {
193 error = "NewPtr"; 185 error = "NewPtr";
194 goto bail; 186 goto bail;
195 } 187 }
213 if (propertyListRef == NULL) { 205 if (propertyListRef == NULL) {
214 error = "CFPropertyListCreateFromXMLData"; 206 error = "CFPropertyListCreateFromXMLData";
215 goto bail; 207 goto bail;
216 } 208 }
217 209
218 // Now we got the Property List in memory. Parse it. 210 /* Now we got the Property List in memory. Parse it. */
219 211
220 // First, make sure the root item is a CFDictionary. If not, release and bail. 212 /* First, make sure the root item is a CFDictionary. If not, release and bail. */
221 if(CFGetTypeID(propertyListRef)== CFDictionaryGetTypeID()) 213 if(CFGetTypeID(propertyListRef)== CFDictionaryGetTypeID())
222 { 214 {
223 CFDictionaryRef dictRef = (CFDictionaryRef)propertyListRef; 215 CFDictionaryRef dictRef = (CFDictionaryRef)propertyListRef;
224 216
225 CFDataRef theRawTOCDataRef; 217 CFDataRef theRawTOCDataRef;
226 CFArrayRef theSessionArrayRef; 218 CFArrayRef theSessionArrayRef;
227 CFIndex numSessions; 219 CFIndex numSessions;
228 CFIndex index; 220 CFIndex index;
229 221
230 // This is how we get the Raw TOC Data 222 /* This is how we get the Raw TOC Data */
231 theRawTOCDataRef = (CFDataRef)CFDictionaryGetValue (dictRef, CFSTR(kRawTOCDataString)); 223 theRawTOCDataRef = (CFDataRef)CFDictionaryGetValue (dictRef, CFSTR(kRawTOCDataString));
232 224
233 // Get the session array info. 225 /* Get the session array info. */
234 theSessionArrayRef = (CFArrayRef)CFDictionaryGetValue (dictRef, CFSTR(kSessionsString)); 226 theSessionArrayRef = (CFArrayRef)CFDictionaryGetValue (dictRef, CFSTR(kSessionsString));
235 227
236 // Find out how many sessions there are. 228 /* Find out how many sessions there are. */
237 numSessions = CFArrayGetCount (theSessionArrayRef); 229 numSessions = CFArrayGetCount (theSessionArrayRef);
238 230
239 // Initialize the total number of tracks to 0 231 /* Initialize the total number of tracks to 0 */
240 theCD->numtracks = 0; 232 theCD->numtracks = 0;
241 233
242 // Iterate over all sessions, collecting the track data 234 /* Iterate over all sessions, collecting the track data */
243 for(index = 0; index < numSessions; index++) 235 for(index = 0; index < numSessions; index++)
244 { 236 {
245 CFDictionaryRef theSessionDict; 237 CFDictionaryRef theSessionDict;
246 CFNumberRef leadoutBlock; 238 CFNumberRef leadoutBlock;
247 CFArrayRef trackArray; 239 CFArrayRef trackArray;
270 trackNumber = (CFNumberRef) CFDictionaryGetValue (theTrackDict, CFSTR(kPointKeyString)); 262 trackNumber = (CFNumberRef) CFDictionaryGetValue (theTrackDict, CFSTR(kPointKeyString));
271 sessionNumber = (CFNumberRef) CFDictionaryGetValue (theTrackDict, CFSTR(kSessionNumberKeyString)); 263 sessionNumber = (CFNumberRef) CFDictionaryGetValue (theTrackDict, CFSTR(kSessionNumberKeyString));
272 startBlock = (CFNumberRef) CFDictionaryGetValue (theTrackDict, CFSTR(kStartBlockKeyString)); 264 startBlock = (CFNumberRef) CFDictionaryGetValue (theTrackDict, CFSTR(kStartBlockKeyString));
273 isDataTrack = (CFBooleanRef) CFDictionaryGetValue (theTrackDict, CFSTR(kDataKeyString)); 265 isDataTrack = (CFBooleanRef) CFDictionaryGetValue (theTrackDict, CFSTR(kDataKeyString));
274 266
275 // Fill in the SDL_CD struct 267 /* Fill in the SDL_CD struct */
276 int idx = theCD->numtracks++; 268 int idx = theCD->numtracks++;
277 269
278 CFNumberGetValue (trackNumber, kCFNumberSInt32Type, &value); 270 CFNumberGetValue (trackNumber, kCFNumberSInt32Type, &value);
279 theCD->track[idx].id = value; 271 theCD->track[idx].id = value;
280 272
281 CFNumberGetValue (startBlock, kCFNumberSInt32Type, &value); 273 CFNumberGetValue (startBlock, kCFNumberSInt32Type, &value);
282 theCD->track[idx].offset = value; 274 theCD->track[idx].offset = value;
283 275
284 theCD->track[idx].type = (isDataTrack == kCFBooleanTrue) ? SDL_DATA_TRACK : SDL_AUDIO_TRACK; 276 theCD->track[idx].type = (isDataTrack == kCFBooleanTrue) ? SDL_DATA_TRACK : SDL_AUDIO_TRACK;
285 277
286 // Since the track lengths are not stored in .TOC.plist we compute them. 278 /* Since the track lengths are not stored in .TOC.plist we compute them. */
287 if (trackIndex > 0) { 279 if (trackIndex > 0) {
288 theCD->track[idx-1].length = theCD->track[idx].offset - theCD->track[idx-1].offset; 280 theCD->track[idx-1].length = theCD->track[idx].offset - theCD->track[idx-1].offset;
289 } 281 }
290 } 282 }
291 283
292 // Compute the length of the last track 284 /* Compute the length of the last track */
293 CFNumberGetValue (leadoutBlock, kCFNumberSInt32Type, &value); 285 CFNumberGetValue (leadoutBlock, kCFNumberSInt32Type, &value);
294 286
295 theCD->track[theCD->numtracks-1].length = 287 theCD->track[theCD->numtracks-1].length =
296 value - theCD->track[theCD->numtracks-1].offset; 288 value - theCD->track[theCD->numtracks-1].offset;
297 289
298 // Set offset to leadout track 290 /* Set offset to leadout track */
299 theCD->track[theCD->numtracks].offset = value; 291 theCD->track[theCD->numtracks].offset = value;
300 } 292 }
301 293
302 } 294 }
303 295
317 309
318 FSCloseFork (forkRefNum); 310 FSCloseFork (forkRefNum);
319 311
320 return theErr; 312 return theErr;
321 } 313 }
322
323 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
324 // ListTrackFiles
325 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
326 314
327 int ListTrackFiles (FSVolumeRefNum theVolume, FSRef *trackFiles, int numTracks) 315 int ListTrackFiles (FSVolumeRefNum theVolume, FSRef *trackFiles, int numTracks)
328 { 316 {
329 OSStatus result = -1; 317 OSStatus result = -1;
330 FSIterator iterator; 318 FSIterator iterator;
355 if (result == noErr) { 343 if (result == noErr) {
356 344
357 CFStringRef name; 345 CFStringRef name;
358 name = CFStringCreateWithCharacters (NULL, nameStr.unicode, nameStr.length); 346 name = CFStringCreateWithCharacters (NULL, nameStr.unicode, nameStr.length);
359 347
360 // Look for .aiff extension 348 /* Look for .aiff extension */
361 if (CFStringHasSuffix (name, CFSTR(".aiff")) || 349 if (CFStringHasSuffix (name, CFSTR(".aiff")) ||
362 CFStringHasSuffix (name, CFSTR(".cdda"))) { 350 CFStringHasSuffix (name, CFSTR(".cdda"))) {
363 351
364 // Extract the track id from the filename 352 /* Extract the track id from the filename */
365 int trackID = 0, i = 0; 353 int trackID = 0, i = 0;
366 while (i < nameStr.length && !isdigit(nameStr.unicode[i])) { 354 while (i < nameStr.length && !isdigit(nameStr.unicode[i])) {
367 ++i; 355 ++i;
368 } 356 }
369 while (i < nameStr.length && isdigit(nameStr.unicode[i])) { 357 while (i < nameStr.length && isdigit(nameStr.unicode[i])) {
374 #if DEBUG_CDROM 362 #if DEBUG_CDROM
375 printf("Found AIFF for track %d: '%s'\n", trackID, 363 printf("Found AIFF for track %d: '%s'\n", trackID,
376 CFStringGetCStringPtr (name, CFStringGetSystemEncoding())); 364 CFStringGetCStringPtr (name, CFStringGetSystemEncoding()));
377 #endif 365 #endif
378 366
379 // Track ID's start at 1, but we want to start at 0 367 /* Track ID's start at 1, but we want to start at 0 */
380 trackID--; 368 trackID--;
381 369
382 assert(0 <= trackID && trackID <= SDL_MAX_TRACKS); 370 assert(0 <= trackID && trackID <= SDL_MAX_TRACKS);
383 371
384 if (trackID < numTracks) 372 if (trackID < numTracks)
391 } 379 }
392 380
393 return 0; 381 return 0;
394 } 382 }
395 383
396 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
397 // LoadFile
398 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
399
400 int LoadFile (const FSRef *ref, int startFrame, int stopFrame) 384 int LoadFile (const FSRef *ref, int startFrame, int stopFrame)
401 { 385 {
402 int error = -1; 386 int error = -1;
403 387
404 if (CheckInit () < 0) 388 if (CheckInit () < 0)
405 goto bail; 389 goto bail;
406 390
407 // release any currently playing file 391 /* release any currently playing file */
408 if (ReleaseFile () < 0) 392 if (ReleaseFile () < 0)
409 goto bail; 393 goto bail;
410 394
411 #if DEBUG_CDROM 395 #if DEBUG_CDROM
412 printf ("LoadFile: %d %d\n", startFrame, stopFrame); 396 printf ("LoadFile: %d %d\n", startFrame, stopFrame);
413 #endif 397 #endif
414 398
415 //try { 399 /*try {*/
416 400
417 // create a new player, and attach to the audio unit 401 /* create a new player, and attach to the audio unit */
418 402
419 thePlayer = new_AudioFilePlayer(ref); 403 thePlayer = new_AudioFilePlayer(ref);
420 if (thePlayer == NULL) { 404 if (thePlayer == NULL) {
421 SDL_SetError ("LoadFile: Could not create player"); 405 SDL_SetError ("LoadFile: Could not create player");
422 return -3; //throw (-3); 406 return -3; /*throw (-3);*/
423 } 407 }
424 408
425 if (!thePlayer->SetDestination(thePlayer, &theUnit)) 409 if (!thePlayer->SetDestination(thePlayer, &theUnit))
426 goto bail; 410 goto bail;
427 411
429 thePlayer->SetStartFrame (thePlayer, startFrame); 413 thePlayer->SetStartFrame (thePlayer, startFrame);
430 414
431 if (stopFrame >= 0 && stopFrame > startFrame) 415 if (stopFrame >= 0 && stopFrame > startFrame)
432 thePlayer->SetStopFrame (thePlayer, stopFrame); 416 thePlayer->SetStopFrame (thePlayer, stopFrame);
433 417
434 // we set the notifier later 418 /* we set the notifier later */
435 //thePlayer->SetNotifier(thePlayer, FilePlayNotificationHandler, NULL); 419 /*thePlayer->SetNotifier(thePlayer, FilePlayNotificationHandler, NULL);*/
436 420
437 if (!thePlayer->Connect(thePlayer)) 421 if (!thePlayer->Connect(thePlayer))
438 goto bail; 422 goto bail;
439 423
440 #if DEBUG_CDROM 424 #if DEBUG_CDROM
441 thePlayer->Print(thePlayer); 425 thePlayer->Print(thePlayer);
442 fflush (stdout); 426 fflush (stdout);
443 #endif 427 #endif
444 //} 428 /*}
445 //catch (...) 429 catch (...)
446 //{ 430 {
447 // goto bail; 431 goto bail;
448 //} 432 }*/
449 433
450 error = 0; 434 error = 0;
451 435
452 bail: 436 bail:
453 return error; 437 return error;
454 } 438 }
455 439
456 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
457 // ReleaseFile
458 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
459
460 int ReleaseFile () 440 int ReleaseFile ()
461 { 441 {
462 int error = -1; 442 int error = -1;
463 443
464 // (Don't see any way that the original C++ code could throw here.) --ryan. 444 /* (Don't see any way that the original C++ code could throw here.) --ryan. */
465 //try { 445 /*try {*/
466 if (thePlayer != NULL) { 446 if (thePlayer != NULL) {
467 447
468 thePlayer->Disconnect(thePlayer); 448 thePlayer->Disconnect(thePlayer);
469 449
470 delete_AudioFilePlayer(thePlayer); 450 delete_AudioFilePlayer(thePlayer);
471 451
472 thePlayer = NULL; 452 thePlayer = NULL;
473 } 453 }
474 //} 454 /*}
475 //catch (...) 455 catch (...)
476 //{ 456 {
477 // goto bail; 457 goto bail;
478 //} 458 }*/
479 459
480 error = 0; 460 error = 0;
481 461
482 // bail: 462 /* bail: */
483 return error; 463 return error;
484 } 464 }
485 465
486 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
487 // PlayFile
488 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
489
490 int PlayFile () 466 int PlayFile ()
491 { 467 {
492 OSStatus result = -1; 468 OSStatus result = -1;
493 469
494 if (CheckInit () < 0) 470 if (CheckInit () < 0)
495 goto bail; 471 goto bail;
496 472
497 // try { 473 /*try {*/
498 474
499 // start processing of the audio unit 475 // start processing of the audio unit
500 result = AudioOutputUnitStart (theUnit); 476 result = AudioOutputUnitStart (theUnit);
501 if (result) goto bail; //THROW_RESULT("PlayFile: AudioOutputUnitStart") 477 if (result) goto bail; //THROW_RESULT("PlayFile: AudioOutputUnitStart")
502 478
503 // } 479 /*}
504 // catch (...) 480 catch (...)
505 // { 481 {
506 // goto bail; 482 goto bail;
507 // } 483 }*/
508 484
509 result = 0; 485 result = 0;
510 486
511 bail: 487 bail:
512 return result; 488 return result;
513 } 489 }
514 490
515 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
516 // PauseFile
517 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
518
519 int PauseFile () 491 int PauseFile ()
520 { 492 {
521 OSStatus result = -1; 493 OSStatus result = -1;
522 494
523 if (CheckInit () < 0) 495 if (CheckInit () < 0)
524 goto bail; 496 goto bail;
525 497
526 //try { 498 /*try {*/
527 499
528 // stop processing the audio unit 500 /* stop processing the audio unit */
529 result = AudioOutputUnitStop (theUnit); 501 result = AudioOutputUnitStop (theUnit);
530 if (result) goto bail; //THROW_RESULT("PauseFile: AudioOutputUnitStop") 502 if (result) goto bail; /*THROW_RESULT("PauseFile: AudioOutputUnitStop")*/
531 //} 503 /*}
532 //catch (...) 504 catch (...)
533 //{ 505 {
534 // goto bail; 506 goto bail;
535 //} 507 }*/
536 508
537 result = 0; 509 result = 0;
538 bail: 510 bail:
539 return result; 511 return result;
540 } 512 }
541 513
542 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
543 // SetCompletionProc
544 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
545
546 void SetCompletionProc (CDPlayerCompletionProc proc, SDL_CD *cdrom) 514 void SetCompletionProc (CDPlayerCompletionProc proc, SDL_CD *cdrom)
547 { 515 {
548 assert(thePlayer != NULL); 516 assert(thePlayer != NULL);
549 517
550 theCDROM = cdrom; 518 theCDROM = cdrom;
551 completionProc = proc; 519 completionProc = proc;
552 thePlayer->SetNotifier (thePlayer, FilePlayNotificationHandler, cdrom); 520 thePlayer->SetNotifier (thePlayer, FilePlayNotificationHandler, cdrom);
553 } 521 }
554
555 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
556 // GetCurrentFrame
557 //ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ
558 522
559 int GetCurrentFrame () 523 int GetCurrentFrame ()
560 { 524 {
561 int frame; 525 int frame;
562 526
576 if (playBackWasInit) 540 if (playBackWasInit)
577 return 0; 541 return 0;
578 542
579 OSStatus result = noErr; 543 OSStatus result = noErr;
580 544
581 // Create the callback semaphore 545 /* Create the callback semaphore */
582 callbackSem = SDL_CreateSemaphore(0); 546 callbackSem = SDL_CreateSemaphore(0);
583 547
584 // Start callback thread 548 /* Start callback thread */
585 SDL_CreateThread(RunCallBackThread, NULL); 549 SDL_CreateThread(RunCallBackThread, NULL);
586 550
587 { //try { 551 { /*try {*/
588 ComponentDescription desc; 552 ComponentDescription desc;
589 553
590 desc.componentType = kAudioUnitComponentType; 554 desc.componentType = kAudioUnitComponentType;
591 desc.componentSubType = kAudioUnitSubType_Output; 555 desc.componentSubType = kAudioUnitSubType_Output;
592 desc.componentManufacturer = kAudioUnitID_DefaultOutput; 556 desc.componentManufacturer = kAudioUnitID_DefaultOutput;
607 if (result) return -1; //THROW_RESULT("CheckInit: AudioUnitInitialize") 571 if (result) return -1; //THROW_RESULT("CheckInit: AudioUnitInitialize")
608 572
609 573
610 playBackWasInit = true; 574 playBackWasInit = true;
611 } 575 }
612 //catch (...) 576 /*catch (...)
613 //{ 577 {
614 // return -1; 578 return -1;
615 //} 579 }*/
616 580
617 return 0; 581 return 0;
618 } 582 }
619 583
620 static void FilePlayNotificationHandler(void * inRefCon, OSStatus inStatus) 584 static void FilePlayNotificationHandler(void * inRefCon, OSStatus inStatus)
621 { 585 {
622 if (inStatus == kAudioFilePlay_FileIsFinished) { 586 if (inStatus == kAudioFilePlay_FileIsFinished) {
623 587
624 // notify non-CA thread to perform the callback 588 /* notify non-CA thread to perform the callback */
625 SDL_SemPost(callbackSem); 589 SDL_SemPost(callbackSem);
626 590
627 } else if (inStatus == kAudioFilePlayErr_FilePlayUnderrun) { 591 } else if (inStatus == kAudioFilePlayErr_FilePlayUnderrun) {
628 592
629 SDL_SetError ("CDPlayer Notification: buffer underrun"); 593 SDL_SetError ("CDPlayer Notification: buffer underrun");
659 #endif 623 #endif
660 624
661 return 0; 625 return 0;
662 } 626 }
663 627
664 //}; // extern "C" 628 /*}; // extern "C" */