.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
