Home | History | Annotate | Download | only in macosx

Lines Matching refs:cdrom

45 static int         SDL_SYS_CDGetTOC (SDL_CD *cdrom);
46 static CDstatus SDL_SYS_CDStatus (SDL_CD *cdrom, int *position);
47 static int SDL_SYS_CDPlay (SDL_CD *cdrom, int start, int length);
48 static int SDL_SYS_CDPause (SDL_CD *cdrom);
49 static int SDL_SYS_CDResume (SDL_CD *cdrom);
50 static int SDL_SYS_CDStop (SDL_CD *cdrom);
51 static int SDL_SYS_CDEject (SDL_CD *cdrom);
52 static void SDL_SYS_CDClose (SDL_CD *cdrom);
57 static int LoadTracks (SDL_CD *cdrom)
60 if ( tracks[cdrom->id] != NULL )
64 tracks[cdrom->id] = (FSRef*) SDL_calloc (1, sizeof(**tracks) * cdrom->numtracks);
65 if (tracks[cdrom->id] == NULL) {
71 if (ListTrackFiles (volumes[cdrom->id], tracks[cdrom->id], cdrom->numtracks) < 0)
78 static FSRef* GetFileForOffset (SDL_CD *cdrom, int start, int length, int *outStartFrame, int *outStopFrame)
82 for (i = 0; i < cdrom->numtracks; i++) {
84 if (cdrom->track[i].offset <= start &&
85 start < (cdrom->track[i].offset + cdrom->track[i].length))
89 if (i == cdrom->numtracks)
94 *outStartFrame = start - cdrom->track[i].offset;
96 if ((*outStartFrame + length) < cdrom->track[i].length) {
104 length -= cdrom->track[i].length - *outStartFrame;
105 nextTrackFrame = cdrom->track[i+1].offset;
109 return &tracks[cdrom->id][i];
113 static void CompletionProc (SDL_CD *cdrom)
127 file = GetFileForOffset (cdrom, nextTrackFrame,
138 SetCompletionProc (CompletionProc, cdrom);
292 SDL_SetError ("Only one cdrom is supported");
302 static int SDL_SYS_CDGetTOC (SDL_CD *cdrom)
310 cdrom->numtracks = cacheTOCNumTracks;
315 ReadTOCData (volumes[cdrom->id], cdrom);
317 cacheTOCNumTracks = cdrom->numtracks;
323 static CDstatus SDL_SYS_CDStatus (SDL_CD *cdrom, int *position)
332 *position = cdrom->track[currentTrack].offset + trackFrame;
339 static int SDL_SYS_CDPlay(SDL_CD *cdrom, int start, int length)
351 if (LoadTracks (cdrom) < 0)
360 ref = GetFileForOffset (cdrom, start, length, &startFrame, &stopFrame);
369 SetCompletionProc (CompletionProc, cdrom);
382 static int SDL_SYS_CDPause(SDL_CD *cdrom)
404 static int SDL_SYS_CDResume(SDL_CD *cdrom)
426 static int SDL_SYS_CDStop(SDL_CD *cdrom)
453 static int SDL_SYS_CDEject(SDL_CD *cdrom)
478 err = FSEjectVolumeSync(volumes[cdrom->id], kNilOptions, &dissenter);
489 volumes[cdrom->id] = 0;
490 free (tracks[cdrom->id]);
491 tracks[cdrom->id] = NULL;
499 static void SDL_SYS_CDClose(SDL_CD *cdrom)