diff src/cdrom/SDL_cdrom.c @ 1662:782fd950bd46 SDL-1.3

Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API. WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid. The code is now run through a consistent indent format: indent -i4 -nut -nsc -br -ce The headers are being converted to automatically generate doxygen documentation.
author Sam Lantinga <slouken@libsdl.org>
date Sun, 28 May 2006 13:04:16 +0000
parents d910939febfa
children 4da1ee79c9af
line wrap: on
line diff
--- a/src/cdrom/SDL_cdrom.c	Sun May 21 17:27:13 2006 +0000
+++ b/src/cdrom/SDL_cdrom.c	Sun May 28 13:04:16 2006 +0000
@@ -27,7 +27,7 @@
 #include "SDL_syscdrom.h"
 
 #if !defined(__MACOS__)
-#define CLIP_FRAMES	10	/* Some CD-ROMs won't go all the way */
+#define CLIP_FRAMES	10      /* Some CD-ROMs won't go all the way */
 #endif
 
 static int SDL_cdinitted = 0;
@@ -35,307 +35,324 @@
 
 /* The system level CD-ROM control functions */
 struct CDcaps SDL_CDcaps = {
-	NULL,					/* Name */
-	NULL,					/* Open */
-	NULL,					/* GetTOC */
-	NULL,					/* Status */
-	NULL,					/* Play */
-	NULL,					/* Pause */
-	NULL,					/* Resume */
-	NULL,					/* Stop */
-	NULL,					/* Eject */
-	NULL,					/* Close */
+    NULL,                       /* Name */
+    NULL,                       /* Open */
+    NULL,                       /* GetTOC */
+    NULL,                       /* Status */
+    NULL,                       /* Play */
+    NULL,                       /* Pause */
+    NULL,                       /* Resume */
+    NULL,                       /* Stop */
+    NULL,                       /* Eject */
+    NULL,                       /* Close */
 };
 int SDL_numcds;
 
-int SDL_CDROMInit(void)
+int
+SDL_CDROMInit (void)
 {
-	int retval;
+    int retval;
 
-	SDL_numcds = 0;
-	retval = SDL_SYS_CDInit();
-	if ( retval == 0 ) {
-		SDL_cdinitted = 1;
-	}
-	default_cdrom = NULL;
-	return(retval);
+    SDL_numcds = 0;
+    retval = SDL_SYS_CDInit ();
+    if (retval == 0) {
+        SDL_cdinitted = 1;
+    }
+    default_cdrom = NULL;
+    return (retval);
 }
 
 /* Check to see if the CD-ROM subsystem has been initialized */
-static int CheckInit(int check_cdrom, SDL_CD **cdrom)
+static int
+CheckInit (int check_cdrom, SDL_CD ** cdrom)
 {
-	int okay;
+    int okay;
 
-	okay = SDL_cdinitted;
-	if ( check_cdrom && (*cdrom == NULL) ) {
-		*cdrom = default_cdrom;
-		if ( *cdrom == NULL ) {
-			SDL_SetError("CD-ROM not opened");
-			okay = 0;
-		}
-	}
-	if ( ! SDL_cdinitted ) {
-		SDL_SetError("CD-ROM subsystem not initialized");
-	}
-	return(okay);
+    okay = SDL_cdinitted;
+    if (check_cdrom && (*cdrom == NULL)) {
+        *cdrom = default_cdrom;
+        if (*cdrom == NULL) {
+            SDL_SetError ("CD-ROM not opened");
+            okay = 0;
+        }
+    }
+    if (!SDL_cdinitted) {
+        SDL_SetError ("CD-ROM subsystem not initialized");
+    }
+    return (okay);
 }
 
-int SDL_CDNumDrives(void)
+int
+SDL_CDNumDrives (void)
 {
-	if ( ! CheckInit(0, NULL) ) {
-		return(-1);
-	}
-	return(SDL_numcds);
+    if (!CheckInit (0, NULL)) {
+        return (-1);
+    }
+    return (SDL_numcds);
 }
 
-const char *SDL_CDName(int drive)
+const char *
+SDL_CDName (int drive)
 {
-	if ( ! CheckInit(0, NULL) ) {
-		return(NULL);
-	}
-	if ( drive >= SDL_numcds ) {
-		SDL_SetError("Invalid CD-ROM drive index");
-		return(NULL);
-	}
-	if ( SDL_CDcaps.Name ) {
-		return(SDL_CDcaps.Name(drive));
-	} else {
-		return("");
-	}
+    if (!CheckInit (0, NULL)) {
+        return (NULL);
+    }
+    if (drive >= SDL_numcds) {
+        SDL_SetError ("Invalid CD-ROM drive index");
+        return (NULL);
+    }
+    if (SDL_CDcaps.Name) {
+        return (SDL_CDcaps.Name (drive));
+    } else {
+        return ("");
+    }
 }
 
-SDL_CD *SDL_CDOpen(int drive)
+SDL_CD *
+SDL_CDOpen (int drive)
 {
-	struct SDL_CD *cdrom;
+    struct SDL_CD *cdrom;
 
-	if ( ! CheckInit(0, NULL) ) {
-		return(NULL);
-	}
-	if ( drive >= SDL_numcds ) {
-		SDL_SetError("Invalid CD-ROM drive index");
-		return(NULL);
-	}
-	cdrom = (SDL_CD *)SDL_malloc(sizeof(*cdrom));
-	if ( cdrom == NULL ) {
-		SDL_OutOfMemory();
-		return(NULL);
-	}
-	SDL_memset(cdrom, 0, sizeof(*cdrom));
-	cdrom->id = SDL_CDcaps.Open(drive);
-	if ( cdrom->id < 0 ) {
-		SDL_free(cdrom);
-		return(NULL);
-	}
-	default_cdrom = cdrom;
-	return(cdrom);
+    if (!CheckInit (0, NULL)) {
+        return (NULL);
+    }
+    if (drive >= SDL_numcds) {
+        SDL_SetError ("Invalid CD-ROM drive index");
+        return (NULL);
+    }
+    cdrom = (SDL_CD *) SDL_malloc (sizeof (*cdrom));
+    if (cdrom == NULL) {
+        SDL_OutOfMemory ();
+        return (NULL);
+    }
+    SDL_memset (cdrom, 0, sizeof (*cdrom));
+    cdrom->id = SDL_CDcaps.Open (drive);
+    if (cdrom->id < 0) {
+        SDL_free (cdrom);
+        return (NULL);
+    }
+    default_cdrom = cdrom;
+    return (cdrom);
 }
 
-CDstatus SDL_CDStatus(SDL_CD *cdrom)
+CDstatus
+SDL_CDStatus (SDL_CD * cdrom)
 {
-	CDstatus status;
-	int i;
-	Uint32 position;
+    CDstatus status;
+    int i;
+    Uint32 position;
 
-	/* Check if the CD-ROM subsystem has been initialized */
-	if ( ! CheckInit(1, &cdrom) ) {
-		return(CD_ERROR);
-	}
+    /* Check if the CD-ROM subsystem has been initialized */
+    if (!CheckInit (1, &cdrom)) {
+        return (CD_ERROR);
+    }
 
-	/* Get the current status of the drive */
-	cdrom->numtracks = 0;
-	cdrom->cur_track = 0;
-	cdrom->cur_frame = 0;
-	status = SDL_CDcaps.Status(cdrom, &i);
-	position = (Uint32)i;
-	cdrom->status = status;
+    /* Get the current status of the drive */
+    cdrom->numtracks = 0;
+    cdrom->cur_track = 0;
+    cdrom->cur_frame = 0;
+    status = SDL_CDcaps.Status (cdrom, &i);
+    position = (Uint32) i;
+    cdrom->status = status;
 
-	/* Get the table of contents, if there's a CD available */
-	if ( CD_INDRIVE(status) ) {
-		if ( SDL_CDcaps.GetTOC(cdrom) < 0 ) {
-			status = CD_ERROR;
-		}
-		/* If the drive is playing, get current play position */
-		if ( (status == CD_PLAYING) || (status == CD_PAUSED) ) {
-			for ( i=1; cdrom->track[i].offset <= position; ++i ) {
-				/* Keep looking */;
-			}
+    /* Get the table of contents, if there's a CD available */
+    if (CD_INDRIVE (status)) {
+        if (SDL_CDcaps.GetTOC (cdrom) < 0) {
+            status = CD_ERROR;
+        }
+        /* If the drive is playing, get current play position */
+        if ((status == CD_PLAYING) || (status == CD_PAUSED)) {
+            for (i = 1; cdrom->track[i].offset <= position; ++i) {
+                /* Keep looking */ ;
+            }
 #ifdef DEBUG_CDROM
-  fprintf(stderr, "Current position: %d, track = %d (offset is %d)\n",
-				position, i-1, cdrom->track[i-1].offset);
+            fprintf (stderr,
+                     "Current position: %d, track = %d (offset is %d)\n",
+                     position, i - 1, cdrom->track[i - 1].offset);
 #endif
-			cdrom->cur_track = i-1;
-			position -= cdrom->track[cdrom->cur_track].offset;
-			cdrom->cur_frame = position;
-		}
-	}
-	return(status);
+            cdrom->cur_track = i - 1;
+            position -= cdrom->track[cdrom->cur_track].offset;
+            cdrom->cur_frame = position;
+        }
+    }
+    return (status);
 }
 
-int SDL_CDPlayTracks(SDL_CD *cdrom,
-			int strack, int sframe, int ntracks, int nframes)
+int
+SDL_CDPlayTracks (SDL_CD * cdrom,
+                  int strack, int sframe, int ntracks, int nframes)
 {
-	int etrack, eframe;
-	int start, length;
+    int etrack, eframe;
+    int start, length;
 
-	/* Check if the CD-ROM subsystem has been initialized */
-	if ( ! CheckInit(1, &cdrom) ) {
-		return(CD_ERROR);
-	}
+    /* Check if the CD-ROM subsystem has been initialized */
+    if (!CheckInit (1, &cdrom)) {
+        return (CD_ERROR);
+    }
 
-	/* Determine the starting and ending tracks */
-	if ( (strack < 0) || (strack >= cdrom->numtracks) ) {
-		SDL_SetError("Invalid starting track");
-		return(CD_ERROR);
-	}
-	if ( ! ntracks && ! nframes ) {
-		etrack = cdrom->numtracks;
-		eframe = 0;
-	} else {
-		etrack = strack+ntracks;
-		if ( etrack == strack ) {
-			eframe = sframe + nframes;
-		} else {
-			eframe = nframes;
-		}
-	}
-	if ( etrack > cdrom->numtracks ) {
-		SDL_SetError("Invalid play length");
-		return(CD_ERROR);
-	}
+    /* Determine the starting and ending tracks */
+    if ((strack < 0) || (strack >= cdrom->numtracks)) {
+        SDL_SetError ("Invalid starting track");
+        return (CD_ERROR);
+    }
+    if (!ntracks && !nframes) {
+        etrack = cdrom->numtracks;
+        eframe = 0;
+    } else {
+        etrack = strack + ntracks;
+        if (etrack == strack) {
+            eframe = sframe + nframes;
+        } else {
+            eframe = nframes;
+        }
+    }
+    if (etrack > cdrom->numtracks) {
+        SDL_SetError ("Invalid play length");
+        return (CD_ERROR);
+    }
 
-	/* Skip data tracks and verify frame offsets */
-	while ( (strack <= etrack) &&
-			(cdrom->track[strack].type == SDL_DATA_TRACK) ) {
-		++strack;
-	}
-	if ( sframe >= (int)cdrom->track[strack].length ) {
-		SDL_SetError("Invalid starting frame for track %d", strack);
-		return(CD_ERROR);
-	}
-	while ( (etrack > strack) &&
-			(cdrom->track[etrack-1].type == SDL_DATA_TRACK) ) {
-		--etrack;
-	}
-	if ( eframe > (int)cdrom->track[etrack].length ) {
-		SDL_SetError("Invalid ending frame for track %d", etrack);
-		return(CD_ERROR);
-	}
+    /* Skip data tracks and verify frame offsets */
+    while ((strack <= etrack) &&
+           (cdrom->track[strack].type == SDL_DATA_TRACK)) {
+        ++strack;
+    }
+    if (sframe >= (int) cdrom->track[strack].length) {
+        SDL_SetError ("Invalid starting frame for track %d", strack);
+        return (CD_ERROR);
+    }
+    while ((etrack > strack) &&
+           (cdrom->track[etrack - 1].type == SDL_DATA_TRACK)) {
+        --etrack;
+    }
+    if (eframe > (int) cdrom->track[etrack].length) {
+        SDL_SetError ("Invalid ending frame for track %d", etrack);
+        return (CD_ERROR);
+    }
 
-	/* Determine start frame and play length */
-	start = (cdrom->track[strack].offset+sframe);
-	length = (cdrom->track[etrack].offset+eframe)-start;
+    /* Determine start frame and play length */
+    start = (cdrom->track[strack].offset + sframe);
+    length = (cdrom->track[etrack].offset + eframe) - start;
 #ifdef CLIP_FRAMES
-	/* I've never seen this necessary, but xmcd does it.. */
-	length -= CLIP_FRAMES;	/* CLIP_FRAMES == 10 */
+    /* I've never seen this necessary, but xmcd does it.. */
+    length -= CLIP_FRAMES;      /* CLIP_FRAMES == 10 */
 #endif
-	if ( length < 0 ) {
-		return(0);
-	}
+    if (length < 0) {
+        return (0);
+    }
 
-	/* Play! */
+    /* Play! */
 #ifdef DEBUG_CDROM
-  fprintf(stderr, "Playing %d frames at offset %d\n", length, start);
+    fprintf (stderr, "Playing %d frames at offset %d\n", length, start);
 #endif
-	return(SDL_CDcaps.Play(cdrom, start, length));
+    return (SDL_CDcaps.Play (cdrom, start, length));
 }
 
-int SDL_CDPlay(SDL_CD *cdrom, int sframe, int length)
+int
+SDL_CDPlay (SDL_CD * cdrom, int sframe, int length)
 {
-	/* Check if the CD-ROM subsystem has been initialized */
-	if ( ! CheckInit(1, &cdrom) ) {
-		return(CD_ERROR);
-	}
+    /* Check if the CD-ROM subsystem has been initialized */
+    if (!CheckInit (1, &cdrom)) {
+        return (CD_ERROR);
+    }
 
-	return(SDL_CDcaps.Play(cdrom, sframe, length));
+    return (SDL_CDcaps.Play (cdrom, sframe, length));
 }
 
-int SDL_CDPause(SDL_CD *cdrom)
+int
+SDL_CDPause (SDL_CD * cdrom)
 {
-	CDstatus status;
-	int retval;
+    CDstatus status;
+    int retval;
 
-	/* Check if the CD-ROM subsystem has been initialized */
-	if ( ! CheckInit(1, &cdrom) ) {
-		return(CD_ERROR);
-	}
+    /* Check if the CD-ROM subsystem has been initialized */
+    if (!CheckInit (1, &cdrom)) {
+        return (CD_ERROR);
+    }
 
-	status = SDL_CDcaps.Status(cdrom, NULL);
-	switch (status) {
-		case CD_PLAYING:
-			retval = SDL_CDcaps.Pause(cdrom);
-			break;
-		default:
-			retval = 0;
-			break;
-	}
-	return(retval);
+    status = SDL_CDcaps.Status (cdrom, NULL);
+    switch (status) {
+    case CD_PLAYING:
+        retval = SDL_CDcaps.Pause (cdrom);
+        break;
+    default:
+        retval = 0;
+        break;
+    }
+    return (retval);
 }
 
-int SDL_CDResume(SDL_CD *cdrom)
+int
+SDL_CDResume (SDL_CD * cdrom)
 {
-	CDstatus status;
-	int retval;
-
-	/* Check if the CD-ROM subsystem has been initialized */
-	if ( ! CheckInit(1, &cdrom) ) {
-		return(CD_ERROR);
-	}
+    CDstatus status;
+    int retval;
 
-	status = SDL_CDcaps.Status(cdrom, NULL);
-	switch (status) {
-		case CD_PAUSED:
-			retval = SDL_CDcaps.Resume(cdrom);
-		default:
-			retval = 0;
-			break;
-	}
-	return(retval);
+    /* Check if the CD-ROM subsystem has been initialized */
+    if (!CheckInit (1, &cdrom)) {
+        return (CD_ERROR);
+    }
+
+    status = SDL_CDcaps.Status (cdrom, NULL);
+    switch (status) {
+    case CD_PAUSED:
+        retval = SDL_CDcaps.Resume (cdrom);
+    default:
+        retval = 0;
+        break;
+    }
+    return (retval);
 }
 
-int SDL_CDStop(SDL_CD *cdrom)
+int
+SDL_CDStop (SDL_CD * cdrom)
 {
-	CDstatus status;
-	int retval;
+    CDstatus status;
+    int retval;
 
-	/* Check if the CD-ROM subsystem has been initialized */
-	if ( ! CheckInit(1, &cdrom) ) {
-		return(CD_ERROR);
-	}
+    /* Check if the CD-ROM subsystem has been initialized */
+    if (!CheckInit (1, &cdrom)) {
+        return (CD_ERROR);
+    }
 
-	status = SDL_CDcaps.Status(cdrom, NULL);
-	switch (status) {
-		case CD_PLAYING:
-		case CD_PAUSED:
-			retval = SDL_CDcaps.Stop(cdrom);
-		default:
-			retval = 0;
-			break;
-	}
-	return(retval);
+    status = SDL_CDcaps.Status (cdrom, NULL);
+    switch (status) {
+    case CD_PLAYING:
+    case CD_PAUSED:
+        retval = SDL_CDcaps.Stop (cdrom);
+    default:
+        retval = 0;
+        break;
+    }
+    return (retval);
 }
 
-int SDL_CDEject(SDL_CD *cdrom)
+int
+SDL_CDEject (SDL_CD * cdrom)
 {
-	/* Check if the CD-ROM subsystem has been initialized */
-	if ( ! CheckInit(1, &cdrom) ) {
-		return(CD_ERROR);
-	}
-	return(SDL_CDcaps.Eject(cdrom));
+    /* Check if the CD-ROM subsystem has been initialized */
+    if (!CheckInit (1, &cdrom)) {
+        return (CD_ERROR);
+    }
+    return (SDL_CDcaps.Eject (cdrom));
 }
 
-void SDL_CDClose(SDL_CD *cdrom)
+void
+SDL_CDClose (SDL_CD * cdrom)
 {
-	/* Check if the CD-ROM subsystem has been initialized */
-	if ( ! CheckInit(1, &cdrom) ) {
-		return;
-	}
-	SDL_CDcaps.Close(cdrom);
-	SDL_free(cdrom);
-	default_cdrom = NULL;
+    /* Check if the CD-ROM subsystem has been initialized */
+    if (!CheckInit (1, &cdrom)) {
+        return;
+    }
+    SDL_CDcaps.Close (cdrom);
+    SDL_free (cdrom);
+    default_cdrom = NULL;
 }
 
-void SDL_CDROMQuit(void)
+void
+SDL_CDROMQuit (void)
 {
-	SDL_SYS_CDQuit();
-	SDL_cdinitted = 0;
+    SDL_SYS_CDQuit ();
+    SDL_cdinitted = 0;
 }
+
+/* vi: set ts=4 sw=4 expandtab: */