.TH "SDL_CDStatus" "3" "Tue 11 Sep 2001, 22:58" "SDL" "SDL API Reference" 
.SH "NAME"
SDL_CDStatus\- Returns the current status of the given drive\&.
.SH "SYNOPSIS"
.PP
\fB#include "SDL\&.h"
.sp
\fBCDstatus \fBSDL_CDStatus\fP\fR(\fBSDL_CD *cdrom\fR);
\fB/* Given a status, returns true if there\&'s a disk in the drive */
#define CD_INDRIVE(status)      ((int)status > 0)
.SH "DESCRIPTION"
.PP
This function returns the current status of the given drive\&. Status is described like so: 
.PP
.nf
\f(CWtypedef enum {
  CD_TRAYEMPTY,
  CD_STOPPED,
  CD_PLAYING,
  CD_PAUSED,
  CD_ERROR = -1
} CDstatus;\fR
.fi
.PP
.PP
If the drive has a CD in it, the table of contents of the CD and current play position of the CD will be stored in the SDL_CD structure\&.
.PP
The macro \fBCD_INDRIVE\fP is provided for convenience, and given a status returns true if there\&'s a disk in the drive\&.
.PP
.RS
\fBNote:  
.PP
\fBSDL_CDStatus\fP also updates the \fI\fBSDL_CD\fR\fR structure passed to it\&.
.RE
.SH "EXAMPLE"
.PP
.nf
\f(CWint playTrack(int track)
{
  int playing = 0;

  if ( CD_INDRIVE(SDL_CDStatus(cdrom)) ) {
  /* clamp to the actual number of tracks on the CD */
    if (track >= cdrom->numtracks) {
      track = cdrom->numtracks-1;
    }

    if ( SDL_CDPlayTracks(cdrom, track, 0, 1, 0) == 0 ) {
      playing = 1;
    }
  }
  return playing;
}\fR
.fi
.PP
.SH "SEE ALSO"
.PP
\fI\fBSDL_CD\fP\fR
...\" created by instant / docbook-to-man, Tue 11 Sep 2001, 22:58
